C语言上机练习题

C语言上机考试练习题(1)

说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。

1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求:

(1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。

(2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。 #include<> #include<> void main() { }

int cmpsubstr(char *s1,char *s2) {

int i,d,a=0,situation=0; d=strlen(s1);

for(i=0;*(s2+i)!='\\0';i++) {

int cmpsubstr(char *s1,char *s2); char str1[20],str2[50]; char *s1=str1,*s2=str2; gets(str1); gets(str2);

printf(\

}

}

if(*(s1+a)==*(s2+i)) { } else { }

a=0; a++; if(a==d) { }

situation=1; break;

if(situation==0)return(-1); else return(i-d+2);

2、输入一个字符串,内有数字和非数字字符,如:a123x456

17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出这些整数。要求:

(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。 (2)子函数的返回值为整数的个数。 #include<> #include<> void main() {

int search(char *str,int *sum); char str[100];

}

int d,sum[20],i; gets(str);

d=search(str,sum);

for(i=0;i

search(char *str,int *sum) {

int i,t=0,a=0;

for(i=0;*(str+i)!='\\0';i++) { }

if(*(str+i-1)>='0'&&*(str+i-1)<='9')return(t+1);

if(*(str+i)>='0'&&*(str+i)<='9') { }

else if(*(str+i-1)>='0'&&*(str+i-1)<='9') { }

t++; a=0; if(a==0) { } else { }

*(sum+t)=*(sum+t)*10+(int)(*(str+i)-'0'); *(sum+t)=(int)(*(str+i)-'0'); a++;

}

else return(t);

3、编写一个主函数和子函数tran(x, r),要求是:函数tran(x, r)将十进制整数x转换成r进制数y(r在2-16之间),x和r的值由主调函数(即主函数)传入,y的值需要返回主调函数进行输出。要求:y的值利用字符数组进行存储,数组的每一个元素存放y的一位数字字符。 #include<> #include<> #include<> #include<> void main() { }

char* tran(int x,int r) {

int len1,len2,i,t; char *y1,*y2;

len1=2+(int)log((double)x)/log((double)r); y1=(char*)malloc(len1*sizeof(char)); for(i=0;x!=0;i++) {

t=x%r;

char* tran(int x,int r); int x,r; char *y;

printf(\ scanf(\ y=tran(x,r); puts(y);

}

}

if(t<10)

*(y1+i)=(char)(t+48); else *(y1+i)=(char)(t+87); x=(int)x/r;

*(y1+i)='\\0'; len2=strlen(y1);

y2=(char*)malloc(len2*sizeof(char)); for(i=0;i

*(y2+i)='\\0'; return(y2);

*(y2+i)=*(y1+len2-i-1);

4、编写一个主函数和函数tran(x),要求是:(1)函数tran(x)产生支付指定金额x(如元)的各种面额人民币的数量(注意:尽量支付大面额的人民币),要求按100元、50元、10元、1元、5角、1角、5分、1分八种面额进行统计,产生的结果存放在数组中返回主函数。(2)在主函数中输入一金额,并以该金额调用tran函数,并输出该函数返回的统计结果。

5、编写程序实现将键盘输入的一行字符按单词倒排输出。如键盘输入“I love you”,屏幕显示“you love I”。要求:

(1) 编写一个函数intinvertion(char ch1[], char ch2[])实现按单词倒排字符串,第一个形参ch1接受实参传过来的原字符串,倒排后的新字符串通过第二个形参返回主函数,函数中还需要统计该字符串中共有多少个单词,函数最后返回字符串中包含的单词个数。

(2) 主函数中输入字符串,调用子函数invertion,输出倒排后的字符串及字符串中包含的单词个数。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4