C语言编程及上机题 联系客服

发布时间 : 星期一 文章C语言编程及上机题更新完毕开始阅读75d743e55ef7ba0d4a733b4b

40. 改错题。本程序的功能是任取一个十进制整数,将其倒过来后与原来的整数相加,得到

一个新的整数后重复上述步骤,则最终可得到一个回文数。 #define MAX 2147483647 #include main( )

{ long int n,m; int count=0;

printf(\ scanf(\

printf(\ while(!nonre(m+n))

if(m+n>=MAX) { printf(\

else { printf(\ printf(\ }

long rev(long int a) { long int t;

for(t=0; a>0; a/=10) t=t+a; return t; }

nonre(long int *s)

{ if(rev(s)==s) return 1; else return 0;

}

41. 改错题:本程序中函数check检查给定的字符串s中左圆插号与右圆括号的个数是否匹

配,若两者个数匹配则函数返回值为0,若左括号数大于右括号数则返回两者差值的负值,否则返回两者差值的正值。 # include main ( )

{ char a[100]; int i;

a=”(((a+b)-c)*d)-e”; i=check(a);

printf(“a=%s i=%d\\n”, a, i ); }

int check(char *s) { int left, right; left=0, right=0; while (s=?\\0?)

{ if (*s= =?(?) left ++; if (*s= =?)?) right ++; s++; }

if (left>right) return(left-right); else if (left

42. 改错题:本程序中函数delete(s,i,L)的功能是从字符数组s中的指定位置i开始删

除指定的L个字符,结果仍放在字符数组s中。例如:字符数组中有“abcdefghijk”,调用delete(s,3,3)后,s中的字符串为“abfghijk”。

#include main ( )

{ static char s[20]=”abcdefghijk”; int i, j;

scanf (“%d%d”, i , j ); switch (delete (s, i, j )){ case -1:

printf (“No copy!\\n s=%s i=%d j=%d\\n”, s, i, j); break; case 0:

printf (“All right!\\n s=%s i=%d j=%d\\n”, s, i, j); break; case 1:

printf (“Local copy!\\n s=%s i=%d j=%d\\n”, s, i, j); } }

delete(char s, int i, int L) { int j, k; char *p;

while (*s&& i ) s++; i--; if (*s= =’\\0’) return (-1); p=s; j=L;

while (*p&& j ) p++; j--;

if (*p= =’\\0’) { *(s+1)=’\\0’; return(1); } while (*s= *s) s++; return 0; } 43. 改错题:将数组str中的若干个字符串按ASCII码的升序进行排序,将排序后的结果输

出。

#include #include main( )

{ int i, n=5;

static char str[ ]={“Follow Me”, “Basic Program”, “Great Wall”, “C Language”,“Computer System”};

for ( i=0; i<5; i++)

printf(“%s\\n”, str[i]); sort(str, n);

for ( i=0; i

printf(“%s\\n”, str[i]); }

sort (char s[ ], int n) { int i, j, k; char *p;

for ( i=0; i

for (strlen(s[i])>0 && strlen(s[j]>0) if (strcmp(s[k], s[j])>0) k=j; if (k=j) { p=s[k];

s[k]=s[i]; s[i]=p; } )}

44. 下面程序的功能是:用选择法对7个学生的成绩按降序排序,并输出排序后的学生的姓

名和成绩。含有错误的源程序为: #include

struct student { char name[10]; float score; }; void sort(struct student *, int ); main()

{ static struct student stu[7]={{\

{\ int i;

sort(stu,7); for(i=0;i<7;i++)

printf(\}

void sort(struct student x[], int n) { int i,j,k; float t;

for(i=0;i

for(j=0;j

if(x[j].score>x[k].score) k=j;

if(k!=j){t=x[i]; x[i]=x[k]; x[k]=t;} } } 注意:

以下各题,每2题是历年等级考试的一份上机试卷,其中前一题是改错题,后一题为编程题。改错题的要求如下:

(1)把改错题所给的程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中错误进行修改。

(2)改错时,可以修改语句中的一部分,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。

(3)改正后的源程序(文件名myf1.c)必须放在考试盘的根目录上,供阅卷用。 编程题的要求如下:

(1)源程序名必须取为myf2.c,输出结果文件名必须取为myf2.out。 (2)数据文件的打开、使用、关闭均按TURBO C文件操作实现。

(3)源程序文件和运行结果文件,均需放在考试盘的根目录上,供阅卷用。 (4)不能将myf2.obj和myf2.exe保存到考试盘上。

45. 改错题:输入一行字符串,把该字符串中的每一个字母串的首字母都换成在写字母,并

输出转换后的字符串。如输入good mor23ning!,则输出为Good Mor23Ning!。注:字母串是以字母开头的字母序列(不区分大小写),即不同字母串这间用非字母隔开。 # include

int change (char *c, int flag)

{ if (flag= =0&&(*c<=?z?&&*c>=?a?||*c<=?Z?&&*c>=?A?)){ if (*c<=?z?&&*c>=?a?) c=c-?a?; return 1; }

else if (flag= =1&&(c<=?z?&&c>=?a?||c<=?Z?&&c>=?A?)) return 1; return flag; }

main ( )

{ int flag=0; char c;

for ( ; (c=gerchar( ))!=?\\n?;) { flag=change(c); putchar(c); }

putchar(?\\n?); }

46. 编程题:用筛选法求100以内的素数。算法为:(1)用一个一维数组a,其初值为:2,

3,4,5,6,7,8,9,?,100; (2)对每一元素a[i](i=1,2,?,99),若a[i]不等于0,则从该元素的后一个元素开始,凡是a[i]的倍数的数组元素均不是素数(置为0); (3)数组a中不为0的元素,均为素数。

47. 改错题:输入一行字符串,求出它所包含的字母串的个数及最长字母串的长度。注:以

字母开头的字母序列(不区分大小写)称为字母串,字母串之间用非字母作为分隔符。如:You are worker23too。其中字母串的个数为4,即:You、are、worker、too,其中最长字母串worker的长度为6。 # include # include main ( )

{ char s[300]; int i, j;

printf(“Input string :”); gets(s)

i=count(s, j);

if (i= =0) printf(“s=%s\\n No letter strings! \\n”, s);

else printf(“s=%s\\n max length is %d\\n number is %d\\n”, s, j, i ); }

count (char *p, int i ) { int j=0, k, m=0; char c;

while(p=) {

while (!((c=*p)>=?a? && c<=?z? || c>=?A? && c<=?Z?) && *p) p++; k=0;

if (*p!=?\\0?) m++; while (c=*p){ p++; k++; }

if (k>j) j=k; } *i=j; return m; } ?2244662n2n2?1?3?3?5?5?7?...?2n?1?2n?148. 编程题:求π的近似值:

-5

要求:先求出前2n项的π值,再求出2n+2项的π值,直至二者之差小于10为止。 49. 改错题:计算二维数组全部外侧元素之和及全部非外侧元素之和。含有错误的源程序为:

# include #define M 3