计算机C语言例题.docx

上传人:b****5 文档编号:3251893 上传时间:2022-11-21 格式:DOCX 页数:34 大小:28.41KB
下载 相关 举报
计算机C语言例题.docx_第1页
第1页 / 共34页
计算机C语言例题.docx_第2页
第2页 / 共34页
计算机C语言例题.docx_第3页
第3页 / 共34页
计算机C语言例题.docx_第4页
第4页 / 共34页
计算机C语言例题.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

计算机C语言例题.docx

《计算机C语言例题.docx》由会员分享,可在线阅读,更多相关《计算机C语言例题.docx(34页珍藏版)》请在冰豆网上搜索。

计算机C语言例题.docx

计算机C语言例题

1

1.填空题

请补充main函数,该函数的功能是:

打印出1~1000中满足:

个位数字的立方等于其本身所有数。

本题的结果为:

164125216729

注意:

部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。

试题程序:

#include

main()

{

inti,g;

clrscr();

for(i=1;i<1000;i++)

{

g=【1】;

if(【2】)

printf("%4d",i);

}

}

【1】i%10【2】g*g*g==i

【解析】填空1:

将一个整数对10求余,就得到这个数的个位数字,并存于变量g中。

填空2:

如果个位数字的立方等于这个数本身,则将这个数输出。

2.改错题

下列给定函数中,函数fun()的功能是:

统计字符串中各元音字母(即A,E,I,O,U)的个数。

注意:

字母不分大小写。

例如,输入THIsisaboot,则应输出是10220。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

/**********************found***********************/

fun(char*s,intnum[5])

{intk,i=5;

for(k=0;k

/**********************found***********************/

num[i]=0;

for(;*s;s++)

{i=-1;

/**********************found***********************/

switch(s)

{case'a':

case'A':

{i=0;break;}

case'e':

case'E':

{i=1;break;}

case'i':

case'I':

{i=2;break;}

case'o':

case'O':

{i=3;break;}

case'u':

case'U':

{i=4;break;}

}

if(i>=0)

num[i]++;

}

}

main()

{chars1[81];intnum1[5],i;

clrscr();

printf("\nPleaseenterastring:

");gets(s1);

fun(s1,num1);

for(i=0;i<5;i++)printf("%d",num1[i]);printf("\n");

}

(1)错误:

fun(char*s,intnum[5])

正确:

voidfun(char*s,intnum[5])

(2)错误:

num[i]=0;

正确:

num[k]=0;

(3)错误:

switch(s)

正确:

switch(*s)

【解析】switch语句说明:

(1)switch后的表达式,可以是整型或字符型,也可以是枚举类型的。

在新的ANSIC标准中允许表达式的类型为任何类型。

(2)每个case后的常量表达式只能是常量组成的表达式,当switch后的表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。

如果没有一个常量表达式的值与switch后的值一致,就执行default后的语句。

(3)各个case后的常量表达式的值必须互不相同,不然的话程序就不知该跳到何处开始执行。

(4)各个case的次序不影响执行结果,一般情况下,尽量使用出现机率大的case放在前面(为什么,等学到《数据结构》就知道了)。

(5)在执行完一个case后面的语句后,程序流程转到下一个case后的语句开始执行。

千万不要理解成执行完一个case后程序就转到switch后的语句去执行了。

在本例中,其他错误都比较简单,而且我们在前面已经介绍过了。

3.编程题

编写一个函数fun(),它的功能是:

实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

例如,分别输入下面两个字符串:

FirstString

SecondString

则程序输出:

FirstStringSecondString

注意:

部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

voidfun(charp1[],charp2[])

{

}

main()

{

chars1[80],s2[40];

clrscr();

printf("Enters1ands2:

\n");

scanf("%s%s",s1,s2);

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

printf("Invokefun(s1,s2):

\n");

fun(s1,s2);

printf("Afterinvoking:

\n");

printf("%s\n",s1);

}

【解析】本题用两个循环,第1个循环的作用是将i走到第1个字符串的末尾。

第2个循环的作用是将第2个字符串的字符连到第1个字符串的末尾。

voidfun(charp1[],charp2[])

{

inti,j;

for(i=0;p1[i]!

='\0';i++);/*求出的i为p1字符串的总长度,包括结束标记位*/

for(j=0;p2[j]!

='\0';j++)

p1[i++]=p2[j];/*将p2字符串连在p1字符串后面*/

p1[i]='\0';/*在字符串最后加上结束标记符*/

}

2

1.填空题

请补充函数fun(),该函数的功能是:

把数组aa中元素下标为偶数的元素按从小到大重新保存在原数组中,其它元素位置不变。

例如,输入"33,67,42,58,25,76,85,16,41,56",则输出"25,67,33,58,41,76,42,16,85,56"。

注意:

部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#defineN10

voidfun(intaa[])

{

inti,j,t;

for(i=0;i

{

for(【1】;j

if(【2】)

{

t=aa[j];

aa[j]=aa[i];

aa[i]=t;

}

}

}

main()

{

inti;

intaa[N]={33,67,42,58,25,76,85,16,

41,56};

clrscr();

printf("\n***originallist***\n");

for(i=0;i

printf("%4d",aa[i]);

fun(aa);

printf("\n***newlist***\n");

for(i=0;i

printf("%4d",aa[i]);

}

【1】j=i或j=i+2【2】aa[i]>aa[j]

【解析】填空1:

本题采用选择法进行排序。

选择法的算法思路是:

如果有n个数则从头到倒数的第2个数一个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按题目要求的顺序将进行比较的这两个数排序(即交换)。

所以此空填j=i,而填j=i+2也可以,因为如果第一次执行循环体时j=i,则aa[i]和aa[j]是同一个元素,不会引起任何改变,所以可以从它的下一次循环开始,即j=i+2。

填空2:

两两比较时,如果后面的元素比前面的元素小,则将两数交换,实现从小到大排列。

2.改错题

下列给定程序中,函数fun()的功能是:

找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

intfun(intm)

{inti,k;

for(i=m+1;;i++)

{for(k=2;k

/**********************found***********************/

if(i%k!

=0)

break;

/**********************found***********************/

if(k

return(i);

}

}

main()

{intn;

clrscr();

printf("\nPleaseentern:

");

scanf("%d",&n);

printf("%d\n",fun(n));

}

(1)错误:

if(i%k!

=0)

正确:

if(i%k==0)

(2)错误:

if(k

正确:

if(k>=i)

【解析】也许刚接触C语言的学习者对素数的概念不清楚,在这里说明一下,素数就是质数,本题的任务是随便输入一个整数m,然后在m的后面寻找紧跟m的一个质数,作为函数值返回。

for(i=m+1;;i++){

是从m后面的一位开始循环,将m后面一位的值赋予i。

然后,我们依次判断m后面的一位是否为素数。

for(k=2;k

if(i%k==0)

是一个简单的数学判断问题,判断i被赋予的值与k的余数是否为零。

3.编程题

请编写函数fun(),该函数的功能是:

实现B=A+A′,即把矩阵A加上A的转置,存放在矩阵B中。

计算结果在main()函数中输出。

例如,输入下面矩阵:

123

456

789

其转置矩阵为:

147

258

369

则程序输出:

2610

61014

101418

注意:

部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

voidfun(inta[3][3],intb[3][3])

{

}

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];

inti,j;

clrscr();

fun(a,t);

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

{for(j=0;j<3;j++)

printf("%7d",t[i][j]);

printf("\n");

}

}

【解析】在《线性代数》里面有矩阵转置的概念,行列数相等的二维数组的转置就是行列互换。

即转置后的第i行第j列正好对应原矩阵的第j行第i列。

若要将矩阵a转置后还存入a中可用程序:

inti,j,t;

for(i=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1