所以应改为for(i=2;i<=m;i++)
12.定义函数出错定义函数若出错应注意两点,一找调用二找return.
例/*******found*******/
voidfun(inta)
{doubles;…………returns;}
main(){……t=fun(&a);……}/*调用函数*/
一找调用:
调用是地址,定义就应是指针.二找return,return返回的s是double,定义就应该是double
应改为doublefun(*a)
三、编程题
★编程题可以分为十类
1.a与b合并2.整除3.字符串4.平均分和结构体5.二维数组6.素数7.公式和数字8.删除*号9.找最值10.特殊题
做编程题的方法可分为填程序法和简单方法两种,考生在考试时应先阅读中文题目,再根据自己的习惯决定答题方法.这里给出建议:
整除,素数及公式题不可用简单方法.
★使用简单方法应着重注意格式控制.即程序NONO()函数中的fprintf().常出现的格式控制总结如下
例1:
fprintf(wf,“%4d\n”,a[i]);表示输出的整数应占4位,若不足4位应在该数前面补空格,使其补足4位.
若a数组中元素为{2,4,6,8,10},则输出结果为(□表示空格)
□□□2□□□4□□□6□□□8□□10
例2:
fprintf(wf,“%lf”,s);表示输出的小数应有6位小数.
若s的值为33,则输出结果为33.000000
例3:
“%5.2f”;表示输出的小数(整数部分,小数点,小数部分)一共占5位,并且保留2位小数,若不足2位小数要补0,若超出2位则四舍五入.
fprintf(wf,“%5.2f”,ave);
若ave中的值为91.8,则输出的结果为91.80
fprintf(wf,“%6.1f”,ave);
若ave中的值为78.5则输出结果为□□78.5
例4:
fprintf(wf,“%s\n”,st);“%s”表示输出字符串
若st串为abcdefg则输出结果应顶头写abcdefg
例5.“格式控制”,此时双引号中有什么就输出什么.
fprintf(wf,“Thelowest:
%s,%d\n”m.num,m.s);
则输出结果为The□lowest□:
□NUM06,23
★编程题中文题目中的专有名词解释
1.素数:
只能被1和自身整除的数.如2,3,5,7,11,13…
2.周边元素:
如图所示
1121314151
1222324252
1323334353
1424344454
1525354555
3左下半三角和右上半三角(均包括主对角线)
11213141511121314151
12223242521222324252
13233343531323334353
14243444541424344454
15253545551525354555
4.转置(行列互换)
A123411A’1238
34534412
8123211532
★简单方法in.dat文件中特殊的数据
1.数组中有n个整数,要求把下标从0~p的数组元素平移到数组的最后
10312345678910
解释:
这组数据中10就是题目中的n,3则是题目中p,真正的数组从第三个数1开始,所以此组数据表示:
这是一个有10个元素的一维数组,将下标从0到3的元素平移到最后.
结果为56789101234
还应注意下标从0开始
2.删去一维数组中所有相同的数,使之只剩一个
2022234566667789910101010
解释:
此组数据中20表示这个数组中一共有20个元素,真正的数组应从第二个数2开始.
结果为2345678910
3.w是n位整数,求w后n-1位的数.
fprintf(wf,“%u\n”,fun(x));
12346456123983456751001869078189619011
此题中要求每行只输出一个整数,则结果应为
234
456
2398
4567
……
4.如何判断数组行数和列数
在程序前两行会出现如下所示
#defineM4
#defineN5
M后的数表示行数,N后的数表示列数。
★简单方法的操作步骤
1.阅读中文题目,判断该题是否适用简单方法
2.点击屏幕左上角打开
出现对话框
路径:
rf=fopen("K:
\\EXAM\\240XXXXX\\in.dat","r");
在文件名处填写in.dat
打开后出现以下窗口
3.点击屏幕左上角文件->另存为再次出现打开对话框.在文件名处填写out.dat,点击打开,出现以下窗口
在此窗口中用简单方法做出最后结果,最后点击
保存该文件.
★填程序方法注意事项
启动VC++环境后,在空白的一组{}中填写程序.填完之后先保存,然后点击屏幕右上角
编译,当屏幕下方出现0error(s)时,点击
连接,屏幕下方为0error(s),0warning(s)时,点击
运行,并出现黑屏,黑屏有两种情况.
一,需要考生输入数据后再看结果,如下图所示
此时应将中问题目中“例如”中的数据输入黑屏看结果.若黑屏中结果与题目中例如相吻合,表示此题程序填写正确.如与题目不符,则表示程序中存在非语法类的错误.需继续修改程序.
注:
输入数据的格式应按照程序main()函数中scanf()中的格式控制输入.若输入数据为字符串时,注意“”不输入.例如:
题目中举例为:
当输入字符串“ABCdefg”时,运行结果为“aBcdefg”.此时在黑屏当中我们只需要输入ABCdefg就可以了,无需输入“”
二,黑屏中无需输入数据就已给出结果,如下图所示
此时应将此结果与中文题目中例如所举的例子或按照题意对比,如与题意相符表示此题编写正确,如与题意不符则表示程序中存在非语法类的错误.需继续修改程序.
注:
当黑屏中自动给出结果时,有时其结果可能会与题目中例如有出入,但此时并不意味着结果一定有错误,请仔细读懂中文题目的意思,并验证黑屏结果与中文题目意思是否相符,只要相符就表示程序编写正确.
例如下图所示
中文题目为
黑屏运行结果为
请仔细对比中文题目与黑屏结果!
!
简单方法的练习题
数字合并
1.将a数十位和个位数依次放在c数千位和十位上,b数十位和个位数依次放在c数百位和个位上。
#include
voidfun(inta,intb,long*c)
{
}
main()
{inta,b;longc;voidNONO();
printf("Inputa,b:
");scanf("%d,%d",&a,&b);
fun(a,b,&c);printf("Theresultis:
%d\n",c);NONO();}
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
FILE*rf,*wf;inti,a,b;longc;
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);}
fclose(rf);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
45,12
63,54
14,78
88,91
71,13
12,45
72,32
29,99
34,43
22,44
与该题目类似的有
◇将a数十位和个位数依次放在c数个位和百位上,b数十位和个位数依次放在c数千位和十位上。
◇将a数十位和个位数依次放在c数个位和百位上,b数十位和个位数依次放在c数十位和千位上。
◇将a数十位和个位数依次放在c数十位和千位上,b数十位和个位数依次放在c数百位和个位上。
◇将a数十位和个位数依次放在c数百位和个位上,b数十位和个位数依次放在c数千位和十位上。
◇将a数十位和个位数依次放在c数千位和十位上,b数十位和个位数依次放在c数个位和百位上。
◇将a数十位和个位数依次放在c数十位和千位上,b数十位和个位数依次放在c数个位和百位上。
◇将a数十位和个位数依次放在c数百位和个位上,b数十位和个位数依次放在c数十位和千位上。
平均
1.计算n门课程的平均分。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
FILE*fp,*wf;inti,j;floataver,score[5];
fp=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{for(j=0;j<5;j++)fscanf(fp,"%f,",&score[j]);
aver=fun(score,5);
fprintf(wf,"%5.2f\n",aver);}
fclose(fp);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
90.5,72,80,61.5,55
98,72.5,78,24.5,77
67.5,78,76.5,56,99
88,62.5,45,54.5,71
78,72.5,55,88.5,72
48,82.5,43,94.5,73
68,92.5,87,84.5,74
77,32.5,57,54.5,75
56,42.5,68,67.5,76
85,62.5,99,86.5,52
2.N名学生的成绩已放入一个带头节点的链表结构中,h指向链表的头节点。
求出平均分。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
FILE*in,*out;inti,j;doubles[N],ave;STREC*h;
in=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
out=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{for(j=0;jh=creat(s);ave=fun(h);
fprintf(out,"%6.3lf\n",ave);}
fclose(in);fclose(out);}
进入in.dat,另存为out.dat后,数据形式为:
85.5,76,69.5,85,91,72,64.5,87.5
82.5,66,76.5,76,89,76,46.5,78.5
72.5,56,66.5,66,79,68,46.5,58.5
92.5,76,86.5,86,99,86,56.5,88.5
82,66.5,46.5,56,76,75,76.5,63.5
75.5,74,71.5,85,81,79,64.5,71.5
92.5,61,72.5,84,79,75,66.5,72.5
72.5,86,73.5,80,69,63,76.5,53.5
66.5,71,74.5,70,61,82,86.5,58.5
76,66.5,75.5,60,76,71,96.5,93.5
3.m个人成绩存放在score数组中,将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
inti,j,n,below[10],score[10];FILE*rf,*wf;
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{for(j=0;j<10;j++)fscanf(rf,"%d",&score[j]);
n=fun(score,10,below);
for(j=0;jfprintf(wf,"\n");}
fclose(rf);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
1111211012768856575432
980876675896101301401431451777
910806605496901101101231151444
120576275596401201211441401321
180176175196201201201231451888
280276275296201201287231451555
380376375396301301301331351999
480476475496201201101131151777
580176475296301601801131151111
98767596103040434177
字符串
1.比较两个字符串的长度,函数返回较长的字符串。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
FILE*fp,*wf;inti;chara[20],b[20];
fp=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{fscanf(fp,"%s%s",a,b);
fprintf(wf,"%s\n",fun(a,b));}
fclose(fp);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
alskdffdslkfjds
dksfjfdssdd
jkfdfsdlkfjds
lksdjflksdflkdsjf
lksdjffslkdjf
fsdljfsdlkff
flsdjkfsdklfad
fslkjflsjfslkd
flksjflksdfjknlfksdn
lkjfsfsfsfsd
2.实现两个字符串的连接。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
inti;FILE*rf,*wf;chars1[80],s2[40];
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{fscanf(rf,"%s",s1);fscanf(rf,"%s",s2);fun(s1,s2);
fprintf(wf,"%s\n",s1);}
fclose(rf);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
12345
67890
kjhjkhkjkl
kljkljkl
jkhjkhjkh
987689
kjhjkh
lmjnklj
sdsfsdfds
fsdfdsf
fsdfsdf
345234
423423
423423
7547dvgdf
5634
gdefgdf
tyerter
34563
565764
3.将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
FILE*fp,*wf;chartt[81];inti;
fp=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
for(i=0;i<10;i++)
{fscanf(fp,"%s",tt);fun(tt);
fprintf(wf,"%s\n",tt);}
fclose(fp);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
sdkfjslfkjsfsdfsdfdsgsdfgsdg
fsdlkfjsdlkfjsdlkfsdfkjsd
jkrklwer24352dlksjfjsd
fslkdfjsdlfkjsdkfljsd
fsdlkfjsdlkfsdfsd53534gdefgdf
dflfg435tgldfgsdfgdsgdf
gdfgfdkljgfdklg
fsfvDSFSDFfsdfsd
AnvikosdfjBBBadfjdlksfsd
fdskjNNNkfsdjfNNNdfasjfsd
4.删除字符串中的所有空格。
voidNONO()
{/*打开文件,输入数据,调用函数,输出数据,关闭文件*/
charstr[81];intn=0;FILE*rf,*wf;
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
while(n<10)
{fgets(str,80,rf);fun(str);
fprintf(wf,"%s",str);n++;}
fclose(rf);fclose(wf);}
进入in.dat,另存为out.dat后,数据形式为:
jhfjdkhjdhfjhfjdkhfljsdsdjdskjldsklsdjdsdsdjdslds.
fdshfdsfjskdhfksdfsjklfsfsdjlkfjsdlsjflgfllsdkjfsldfdfdslfkdjs.
Sjdhfdsfsfsdfdskffhdskfdsjkfdjkfhdsjkfdsfdsfdjshfdjsfdsjfsd
jfdshfjdsfskdjhfkjsddsjhfdskfsdfsdkfsdfsdfdskfdskjfhsdkfd
fdsjhfsdfdsfdsjfhdsfdskfdsfsdkfdsjfdsfdsjkfdsfdsfdsfdsjkgj
fjkfdjsdhfsjdkfhsdfdskfdskfdskfhskfdskfdskfhsdkfdskjsdkjsd
jkfdsfsfsdfsdsdfsdlfdsfslslfsdlfsdlfslfsfsdfsdlfsfsd
fsdjkhfdskfdskhfksdffshkjsdffsdkjhfskdfsfdskdfsdkfkfsdhfksd
fdshfksfdsfdsfhdskfdsfdskfhskdfsdkfsdkfsdkfdsfs