計(jì)算機(jī)二級(jí)C語(yǔ)言備考習(xí)題及答案2017
以下是百分網(wǎng)小編為大家整理的2017計(jì)算機(jī)二級(jí)C語(yǔ)言備考習(xí)題及答案,大家可以來(lái)做一做,鞏固一下自己的知識(shí)。
備考習(xí)題一
1: 請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ascii值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一個(gè)新串放在t所指的一個(gè)數(shù)組中。
答案:
void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2==0&&s[i]%2==0)
{
t[j]=s[i];
j++;
}
t[j]=‘\0’;
}
2: 請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ascii值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的一個(gè)數(shù)組中。
答案:
void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i++)
if(i%2!=0&&s[i]%2!=0)
{
t[j]=s[i];
j++;
}
t[j]=‘\0’;
}
3: 假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:使字符串中尾部的*號(hào)不得多于n個(gè);若多于n個(gè),則刪除多于的*號(hào);若少于或等于n個(gè),則什么也不做,字符串中間和前面的*號(hào)不刪除。
答案:
void fun(char *a,int n)
{
int i=0;k=0;
char *p, *t;
p=t=a;
while (*t)
t++;
t--;
while(*t==‘*’)
{
k++;
t--;
}
t++;
if(k>n)
{
while (*p&&p
{
a[i]=*p;
i++;
p++;
}
a[i]=‘\0’;
}
}
4: 學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,n名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun,它的功能使:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。
答案:
int fun (STREC *a, STREC *b)
{
int I,j=0,n=0, max;
max=a[0].s;
for(i=0;i
if(a[i].s>max)
max=a[i].s;
for(i=0;i
if(a[i].s==max)
{
*(b+j)=a[i];
j++;
n++;
}
return n;
}
5: 請(qǐng)編寫(xiě)一個(gè)函數(shù),用來(lái)刪除字符串中的所有空格。
答案:
void fun(char *str)
{
int i=0;
char *p=str;
while (*p)
{
if(*p!=‘’)
{
str[i]=*p;
i++;
}
p++;
}
str[i]=‘\0’;
}
6: 假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:將字符串中的前導(dǎo)*號(hào)全部移到字符串的尾部。
答案:
void fun(char *a)
{
int i=0,n=0;
char *p;
p=a;
while (*p==‘*’)
{
n++;
p++;
}
while (*p)
{
a[i]=*p;
i++;
p++;
}
while(n!=0)
{
a[i]=‘*’;
i++;
n--;
}
a[i]=‘\0’;
}
7: 某學(xué)生的記錄由學(xué)號(hào)、8門(mén)課程成績(jī)和平均分組成,學(xué)號(hào)和8門(mén)課程的成績(jī)已在主函數(shù)中給出。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請(qǐng)自己定義正確的形參。
答案:
void fun(STREC *p)
{
double av=0.0;
int i:
for(i=0;i
av+=p->s[i];
av/=N;
p->ave=av;
}
8: 請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個(gè)數(shù),并返回此值。
答案:
int fun(char *ss, char c)
{
int n=0;
while (*ss)
{
if(*ss==c)
n++;
ss++;
}
return n;
}
9: 請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中由n個(gè)整數(shù),要求把下標(biāo)從0到p(p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。
答案:
void fun(int *w, int p, int n)
{
int b[N], i, j=0;
for(i=0;i<=p;i++)
{
b[i]=w[i];
j++;
}
for(i=0;i<=p;i++)
{
w[j]=b[i];
j++;
}
}
10: 請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是移動(dòng)字符串中內(nèi)容,移動(dòng)的規(guī)則如下:把第1到第m個(gè)字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
答案:
void fun(char *w,int m)
{
char b[N];
int I,j=0;
for(i=0;i
{
b[j]=w[i];
j++;
}
for (i=0;i
w[i]=w[i+m];
for(j=0;j
{
w[i]=b[j];
i++;
}
w[i]=‘\0’;
}
備考習(xí)題二
1: 第1題請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是:將m行n列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個(gè)字符串中。
答案:
void fun(char (*s)[n],char *b)
{int i,j,k=0;
for(j=0;j
for(i=0;i
{b[k]=*(*(s+i)+j)
k++;}
b[k]=‘\0’;}
2: 第2題下列程序定義了n×n的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(int a[][n],int n),該函數(shù)的功能是:將數(shù)組右上半三角元素中的值乘以m。
答案:
void fun(int a[][n],int m)
{int i,j;
for(j=0;j
for(i=0;i<=j;i++)
a[j]=a[j]*m;}
3: 第3題編寫(xiě)一個(gè)函數(shù),從傳入的num個(gè)字符串中找出一個(gè)最長(zhǎng)的一個(gè)字符串,并**形參指針max傳回該串地址(用****作為結(jié)束輸入的標(biāo)志)。
答案:
char *fun(char (*a)[81],int num)
{int i;
char *max;
max=a[0];
for(i=0;i
if(strlen(max)
max=a;
return max;}
4: 第4題編寫(xiě)一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。
答案:
int fun(char *str,char *substr)
{int n;
char *p,*r;
n=0;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r==*p)
{r++;
p++;}
else
break;
if(*r==‘\0’)
n++;
str++;}
return n;}
5: 第5題假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:只刪除字符串前導(dǎo)和尾部的*號(hào),串中字母之間的*號(hào)都不刪除。形參n 給出了字符串的長(zhǎng)度,形參h給出了字符串中前導(dǎo)*號(hào)的個(gè)數(shù),形參e給出了字符串中最后的*個(gè)數(shù)。在編寫(xiě)時(shí)不得使用c語(yǔ)言給提供得字符串函數(shù)。
答案:
void fun(char *a,int n,int h,int e)
{int i=0;
char *p;
for(p=a+h;p
{*(a+i)=*p;
i++;}
*(a+i)=‘\0’;}
6: 第6題學(xué)生得記錄由學(xué)號(hào)和成績(jī)組稱個(gè),n名大學(xué)生得數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun,它的功能時(shí):按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。
答案:
void fun(strec a[])
{int i,j;
strec t;
for(i=0;i
for(j=i;s
if(a.s
{t=a;
a=a[j];
a[j]=t; }}
7: 第7題請(qǐng)編寫(xiě)一個(gè)函數(shù)void fun(char *ss),其功能時(shí):將字符串ss中所有下標(biāo)為奇數(shù)位置上的字母轉(zhuǎn)換為大寫(xiě)(若位置上不是字母,則不轉(zhuǎn)換)。
答案:
void fun(char *ss)
{int i,n=0;
char *p=ss;
while(*p)
{n++;
p++;}
for (i=0;i
if ((ss=‘a’&ss<=‘z’)&i%2!=0)
ss=ss-32;
ss=‘\0’;}
8: 第8題請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a,b合并成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位依次放在c數(shù)的千位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。
答案:
void fun(int a,int b,long *c)
{*c=(a/10)*1000+(b/10)*100+(a)*10+b;}
9: 第9題請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將s所指字符串中下標(biāo)位偶數(shù)同時(shí)ascii值為奇數(shù)的字符刪除,s中剩余的字符形成的新串放在t所指的數(shù)組中。
答案:
void fun(char *s,char t[])
{int i,j=0,n=strlen(s);
for(i=0;i
if(i%2==0&s%2!=0)
else
{f[j]=s;
j++;}
t[j]=‘\0’;}
10: 第10題已知學(xué)生的記錄是由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,n名學(xué)生的數(shù)據(jù)已存入a機(jī)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是:找出成績(jī)最高的學(xué)生記錄,**形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。
答案:
void fun(stu a[],stu *s)
{int i,max;
max=a[0].s;
for (i=0;i
if(a.s>max)
{max=a.s;
*s=a;}}
【計(jì)算機(jī)二級(jí)C語(yǔ)言備考習(xí)題及答案】相關(guān)文章:
2017計(jì)算機(jī)二級(jí)C語(yǔ)言備考習(xí)題及答案03-18
計(jì)算機(jī)二級(jí)備考習(xí)題及答案(C語(yǔ)言)201703-22
2017年計(jì)算機(jī)二級(jí)C語(yǔ)言考試備考習(xí)題及答案12-03
2017年計(jì)算機(jī)二級(jí)C語(yǔ)言備考習(xí)題03-20
2017年計(jì)算機(jī)二級(jí)C語(yǔ)言備考練習(xí)題及答案03-17
計(jì)算機(jī)二級(jí)《C語(yǔ)言》基礎(chǔ)練習(xí)題及答案03-23
計(jì)算機(jī)二級(jí)C語(yǔ)言強(qiáng)化習(xí)題題及答案201712-05