點擊查看:2015年計算機(jī)二級C語言測試題及答案解析匯總
1: 請編寫函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時ascii值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一個新串放在t所指的一個數(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: 請編寫函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為奇數(shù)、同時ascii值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個新串放在t所指的一個數(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: 假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:使字符串中尾部的*號不得多于n個;若多于n個,則刪除多于的*號;若少于或等于n個,則什么也不做,字符串中間和前面的*號不刪除。
答案:
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é)號和成績組成,n名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能使:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個,函數(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: 請編寫一個函數(shù),用來刪除字符串中的所有空格。 答案: void fun(char *str) { int i=0; char *p=str; while (*p) { if(*p!=‘’) { str[i]=*p; i++; } p++; } str[i]=‘\0’; } 6: 假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串中的前導(dǎ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é)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出。請編寫函數(shù)fun,它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請自己定義正確的形參。 答案: void fun(STREC *p) { double av=0.0; int i: for(i=0;i av+=p->s[i]; av/=N; p->ave=av; } 8: 請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。 答案: int fun(char *ss, char c) { int n=0; while (*ss) { if(*ss==c) n++; ss++; } return n; } 9: 請編寫函數(shù)fun,該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中由n個整數(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: 請編寫函數(shù)fun,該函數(shù)的功能是移動字符串中內(nèi)容,移動的規(guī)則如下:把第1到第m個字符,平移到字符串的最后,把第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’; } 相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |