2023年全國(guó)計(jì)算機(jī)二級(jí)C語言程序改錯(cuò)題_第1頁
2023年全國(guó)計(jì)算機(jī)二級(jí)C語言程序改錯(cuò)題_第2頁
2023年全國(guó)計(jì)算機(jī)二級(jí)C語言程序改錯(cuò)題_第3頁
2023年全國(guó)計(jì)算機(jī)二級(jí)C語言程序改錯(cuò)題_第4頁
2023年全國(guó)計(jì)算機(jī)二級(jí)C語言程序改錯(cuò)題_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄TOC\o"1-1"\h\z\uHYPERLINK題目二SS字符串問題 PAGEREF_Toc\h4HYPERLINK題目三變量互換問題1?PAGEREF_Toc\h4HYPERLINK題目三變量互換問題2 PAGEREF_Toc\h5題目三變量互換問題3 PAGEREF_Toc\h5題目四最大公約數(shù)問題?PAGEREF_Toc\h6HYPERLINK\l"_Toc"題目五長(zhǎng)數(shù)變短數(shù)1 PAGEREF_Toc\h7題目五長(zhǎng)數(shù)變短數(shù)2?PAGEREF_Toc\h7題目五長(zhǎng)數(shù)變短數(shù)3?PAGEREF_Toc\h8題目五長(zhǎng)數(shù)變短數(shù)4?PAGEREF_Toc\h9題目五長(zhǎng)數(shù)變短數(shù)5?PAGEREF_Toc\h9題目五長(zhǎng)數(shù)變短數(shù)6 PAGEREF_Toc\h10HYPERLINK\l"_Toc"題目五長(zhǎng)數(shù)變短數(shù)7?PAGEREF_Toc\h11題目五長(zhǎng)數(shù)變短數(shù)8 PAGEREF_Toc\h11HYPERLINK題目五長(zhǎng)數(shù)變短數(shù)9?PAGEREF_Toc\h12HYPERLINK題目六斐波拉契數(shù)列?PAGEREF_Toc\h13HYPERLINK\l"_Toc"題目七鏈表1 PAGEREF_Toc\h14題目七鏈表2 PAGEREF_Toc\h15HYPERLINK題目七鏈表3 PAGEREF_Toc\h16題目七鏈表4 PAGEREF_Toc\h17題目八非素?cái)?shù)問題?PAGEREF_Toc\h19HYPERLINK題目九排序問題1?PAGEREF_Toc\h19_Toc"題目九排序問題3?PAGEREF_Toc\h21HYPERLINK\l"_Toc"題目九排序問題4?PAGEREF_Toc\h22HYPERLINK\l"_Toc"題目九排序問題5?PAGEREF_Toc\h23HYPERLINK\l"_Toc"題目九排序問題6 PAGEREF_Toc\h24HYPERLINK題目九排序問題7 PAGEREF_Toc\h26題目十平均值問題1 PAGEREF_Toc\h26題目十平均值問題2 PAGEREF_Toc\h27題目十平均值問題3?PAGEREF_Toc\h28HYPERLINK\l"_Toc"題目十平均值問題4?PAGEREF_Toc\h29題目十平均值問題5?PAGEREF_Toc\h30題目十一字符串連接1?PAGEREF_Toc\h30題目十一字符串連接2?PAGEREF_Toc\h31題目十一字符串連接3 PAGEREF_Toc\h32HYPERLINK題目十一字符串連接4 PAGEREF_Toc\h32HYPERLINK題目十二求和問題1 PAGEREF_Toc\h33HYPERLINK\l"_Toc"題目十二求和問題2 PAGEREF_Toc\h34題目十二求和問題3?PAGEREF_Toc\h35HYPERLINK題目十二求和問題4 PAGEREF_Toc\h36HYPERLINK題目十二求和問題6?PAGEREF_Toc\h37HYPERLINK題目十二求和問題7?PAGEREF_Toc\h38HYPERLINK題目十二求和問題8 PAGEREF_Toc\h39HYPERLINK\l"_Toc"題目十二求和問題9 PAGEREF_Toc\h39HYPERLINK題目十二求和問題10 PAGEREF_Toc\h40題目十二求和問題11 PAGEREF_Toc\h41HYPERLINK\l"_Toc"題目十二求和問題12?PAGEREF_Toc\h42題目十二求和問題13 \h42題目十二求和問題14?PAGEREF_Toc\h43題目十二求和問題15 PAGEREF_Toc\h44HYPERLINK題目十二求和問題16?PAGEREF_Toc\h44題目十二求和問題17 PAGEREF_Toc\h45HYPERLINK\l"_Toc"題目十二求和問題18?PAGEREF_Toc\h45題目十二求和問題19 PAGEREF_Toc\h46題目十三整數(shù)問題 PAGEREF_Toc\h47HYPERLINK題目十四字符串逆置 PAGEREF_Toc\h48HYPERLINK題目十五進(jìn)制轉(zhuǎn)換1 PAGEREF_Toc\h48HYPERLINK\l"_Toc"題目十五進(jìn)制轉(zhuǎn)換2?49HYPERLINK\l"_Toc"題目十六素?cái)?shù)問題1?PAGEREF_Toc\h50題目十六素?cái)?shù)問題2 PAGEREF_Toc\h50HYPERLINK題目十六素?cái)?shù)問題3 PAGEREF_Toc\h51題目十六素?cái)?shù)問題4 PAGEREF_Toc\h52HYPERLINK\l"_Toc"題目十六素?cái)?shù)問題5 PAGEREF_Toc\h53題目十七刪除字符串中指定項(xiàng)1?PAGEREF_Toc\h53HYPERLINK題目十七刪除字符串中指定項(xiàng)2?PAGEREF_Toc\h54HYPERLINK\l"_Toc"題目十八最小公倍數(shù)問題 PAGEREF_Toc\h55題目十九字符串替換問題1?PAGEREF_Toc\h55HYPERLINK題目十九字符串替換問題2 PAGEREF_Toc\h56題目二十找最長(zhǎng)字符串?PAGEREF_Toc\h57題目二十一數(shù)組問題1?PAGEREF_Toc\h58題目二十一數(shù)組問題2 PAGEREF_Toc\h59題目二十一數(shù)組問題3 PAGEREF_Toc\h60HYPERLINK題目二十二求平方根問題 PAGEREF_Toc\h61題目二十三短字符串變長(zhǎng)字符串1?\h61題目二十三短字符串變長(zhǎng)字符串2?PAGEREF_Toc\h62HYPERLINK\l"_Toc"題目二十三短字符串變長(zhǎng)字符串3?PAGEREF_Toc\h63題目二十三短字符串變長(zhǎng)字符串4?PAGEREF_Toc\h64HYPERLINK\l"_Toc"題目二十四字符串s問題1 PAGEREF_Toc\h64HYPERLINK題目二十四字符串s問題2?PAGEREF_Toc\h65HYPERLINK題目二十四字符串s問題3 PAGEREF_Toc\h66題目二十五求方程的根 PAGEREF_Toc\h67題目二十六求階乘1?68HYPERLINK\l"_Toc"題目二十六求階乘2 PAGEREF_Toc\h69題目二十六求階乘3?PAGEREF_Toc\h69HYPERLINK題目二十七方陣問題?PAGEREF_Toc\h70HYPERLINK題目二十八查找字符串中某元素的數(shù)目 PAGEREF_Toc\h71HYPERLINK題目二十九最大值問題2 PAGEREF_Toc\h72題目二十九最大值問題3?PAGEREF_Toc\h73題目三十大小寫轉(zhuǎn)換1?PAGEREF_Toc\h74題目三十大小寫轉(zhuǎn)換2?PAGEREF_Toc\h75HYPERLINK\l"_Toc"題目三十大小寫轉(zhuǎn)換3 PAGEREF_Toc\h76HYPERLINK題目三十一:計(jì)算數(shù)字位數(shù)的問題1 PAGEREF_Toc\h77題目三十一:計(jì)算數(shù)字位數(shù)的問題2 PAGEREF_Toc\h78題目三十一:計(jì)算數(shù)字位數(shù)的問題3?PAGEREF_Toc\h79HYPERLINK\l"_Toc"題目三十一:計(jì)算數(shù)字位數(shù)的問題4?PAGEREF_Toc\h80題目三十二記錄字母數(shù)字個(gè)數(shù)問題1 PAGEREF_Toc\h81題目三十二記錄字母數(shù)字個(gè)數(shù)問題2 PAGEREF_Toc\h82題目三十二記錄字母數(shù)字個(gè)數(shù)問題3?PAGEREF_Toc\h83題目三十二記錄字母數(shù)字個(gè)數(shù)問題4 PAGEREF_Toc\h83HYPERLINK題目三十三對(duì)角線問題?84HYPERLINK題目三十四比較字符串大小?PAGEREF_Toc\h85題目一前N項(xiàng)和問題.下列給定程序中函數(shù)fun的功能是:求出如下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請(qǐng)改正程序中的錯(cuò)誤,使其得出對(duì)的的結(jié)果。#include<stdio.h>/************found************/voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/************found************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;}main(){intn=5;printf("\nThevalueoffunctionis:%lf\n",fun(n));(1)doublefun(intn)(2)s=s+(double)a/b;題目二SS字符串問題2.下列給定程序中函數(shù)fun的功能是:記錄substr所指的子符串在str所指的字符串中出現(xiàn)的次數(shù)。例如,若字符串為aaas1kaaas,子字符串為as,則應(yīng)輸出2。請(qǐng)改正程序中的錯(cuò)誤,使它能得出對(duì)的的結(jié)果。#include<stdio.h>intfun(char*str,char*substr){inti,j,k,num=0;/************found************/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]=='\0'){num++;break;}returnnum;}main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d\n",fun(str,substr));(1)for(i=0;str[i];i++)(2)if(substr[k+1]=='\0')題目三變量互換問題12.下列給定程序中函數(shù)fun的功能是:實(shí)現(xiàn)兩個(gè)變量值的互換,規(guī)定不允許增長(zhǎng)語句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)營(yíng)后a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它得出對(duì)的的結(jié)果。#include<stdio.h>intfun(int*x,inty){intt;/**************found**************/t=x;x=y;/**************found**************/return(y);}main(){inta=3,b=8;printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);(1)t=*x;*x=y;(2)return(t);或returnt;題目三變量互換問題2下列給定程序中,函數(shù)fun的功能是:實(shí)現(xiàn)兩個(gè)整數(shù)的互換。例如,給a和b分別輸入60和65,輸出為:a=65b=60。#include<stdio.h>#include<conio.h>#include<stdlib.h>/*************found**************/voidfun(inta,b){intt;/*************found**************/t=b;b=a;a=t;}voidmain(){inta,b;system("CLS");printf("Entera,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%db=%d\n",a,b);}(1)voidfun(int*a,int*b)(2)t=*b;*b=*a;*a=t; 題目三變量互換問題32.下列給定程序中,函數(shù)fun的功能是:將主函數(shù)中兩個(gè)變量的值進(jìn)行互換。例如,若變量a中的值為8,b中的值為3,則程序運(yùn)營(yíng)后,a中的值為3,b中的值為8。#include<stdio.h>/*************found**************/voidfun(intx,inty){intt;/*************found**************/t=x;x=y;y=t;}voidmain(){inta,b;a=8;b=3;fun(&a,&b);printf("%d%d\n",a,b);}(1)voidfun(int*x,int*y)(2)t=*x;*x=*y;*y=t;題目四最大公約數(shù)問題2.下列給定程序中函數(shù)fun的功能是:求兩個(gè)非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。#include<stdio.h>intfun(inta,intb){intr,t;if(a<b){/************found************/t=a;b=a;a=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}/************found************/return(a);}main(){intnum1,num2,a;printf("Inputnum1num2:");scanf("%d%d",&num1,&num2);printf("num1=%dnum2=%d\n\n",num1,num2);a=fun(num1,num2);printf("Themaximuncommondivisoris%d\n\n",a);(1)t=a;a=b;b=t;(2)return(b);或returnb;題目五長(zhǎng)數(shù)變短數(shù)12.下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。#include<stdio.h>voidfun(longs,long*t){intd;longsl=1;/************found************/t=0;while(s>0){d=s%10;/************found************/if(d%2==0){*t=d*sl+*t;?sl*=10;}s/=10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);(1)*t=0;(2)if(d%2!=0)或if(d%2==1)題目五長(zhǎng)數(shù)變短數(shù)22.下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù):8642。#include<stdio.h>voidfun(longs,long*t){intd;longsl=1;*t=0;while(s>0){d=s%10;/************found************/if(d%2=0){*t=d*sl+*t;sl*=10;}/************found************/s\=10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}(1)if(d%2==0)(2)s/=10;題目五長(zhǎng)數(shù)變短數(shù)32.下列下列給定程序中,函數(shù)fun的功能是:從低位開始依次取出長(zhǎng)整型變量s中奇數(shù)位上的數(shù),構(gòu)成一個(gè)新數(shù)存放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為7531。#include<stdio.h>/************found************/voidfun(longs,longt){longsl=10;*t=s%10;while(s>0){s=s/100;*t=s%10*sl+*t;/************found************/?sl=sl*100;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}(1)voidfun(longs,long*t)(2)sl=sl*10;題目五長(zhǎng)數(shù)變短數(shù)42.下列給定程序中函數(shù)fun的功能是:從低位開始依次取出長(zhǎng)整型變量s中偶數(shù)位上的數(shù),構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為642。#include<stdio.h>/************found************/voidfun(longs,longt){longsl=10;s/=10;*t=s%10;/************found************/while(s<0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}(1)voidfun(longs,long*t)(2)while(s>0)題目五長(zhǎng)數(shù)變短數(shù)5下列給定程序中,函數(shù)fun的功能是:將字符串s中位于奇數(shù)位置的字符或ASCII碼值為偶數(shù)的字符依次放入字符串t中。例如,字符串中的數(shù)據(jù)為"AABBCCDDEEFF",則輸出應(yīng)當(dāng)是"ABBCDDEFF"。#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>#defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/*************found**************/if(i%2&&s[i]%2==0)t[j++]=s[i];/*************found**************/t[i]='\0';}voidmain(){chars[N],t[N];system("CLS");printf("\nPleaseenterstrings:");gets(s);fun(s,t);printf("\nTheresultis:%s\n",t);}(1)if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)(2)t[j]='\0';或t[j]=0;題目五長(zhǎng)數(shù)變短數(shù)6下列給定程序中,函數(shù)fun的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。#include<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9')/*************found**************/s[j]=s[i];/*************found**************/s[j]=”\0”;}voidmain(){charitem[80];system("CLS");printf("\nEnterastring:");gets(item);printf("\n\nThestringis:%s\n",item);fun(item);printf("\n\nThestringofchangingis:%s\n",item);}(1)s[j++]=s[i];(2)s[j]='\0';題目五長(zhǎng)數(shù)變短數(shù)72.下列給定程序中,函數(shù)fun的功能是:求整數(shù)x的y次方的低3位值。例如,整數(shù)5的6次方為15625,此值的低3位值為625。#include<stdio.h>longfun(intx,inty,long*p){inti;longt=1;/*************found**************/for(i=1;i<y;i++)t=t*x;*p=t;/*************found**************/t=t/1000;returnt;}voidmain(){longt,r;intx,y;printf("\nI(lǐng)nputxandy:");scanf("%1d%1d",&x,&y);t=fun(x,y,&r);printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t);}(1)for(i=1;i<=y;i++)(2)t=t%1000;題目五長(zhǎng)數(shù)變短數(shù)82.給定程序MODI1.C中,fun函數(shù)的功能是:刪除b所指數(shù)組中小于10的數(shù)據(jù)。主函數(shù)中輸出刪除后數(shù)組中余下的數(shù)據(jù)。#include<stdio.h>#include<stdlib.h>#defineN20intfun(int*b){/**********found**********/intt[N],i,numfor(i=0;i<N;i++)if(b[i]>=10)/**********found**********/t[++num]=b[i];/**********found**********/for(i=0;i<nun;i++)b[i]=t[i];return(num);}main(){inta[N],i,num;printf("a數(shù)組中的數(shù)據(jù):\n");for(i=0;i<N;i++){a[i]=rand()%21;printf("%4d",a[i]);}printf("\n");num=fun(a);for(i=0;i<num;i++)printf("%4d",a[i]);printf("\n");}(1)intt[N],i,num=0;(2)t[num++]=b[i];或{t[num]=b[i];num++;}(3)for(i=0;i<num;i++)題目五長(zhǎng)數(shù)變短數(shù)92.給定程序MODI1.C中,fun函數(shù)的功能是:在任意給定的N個(gè)正整數(shù)中,從左到右依次逐個(gè)取三個(gè)數(shù)作為一組,按值大小找出該組數(shù)的中值,用該中值替換與該組數(shù)相應(yīng)的原三個(gè)數(shù)中的中間位置的數(shù)。解決后原數(shù)列中首尾2個(gè)數(shù)不變。解決后數(shù)列在主函數(shù)中輸出。例如,有10個(gè)正整數(shù)如下:初始數(shù)列為:657231858214538第1組數(shù)為:657中值為:6替換后的數(shù)列為:667231858214538第2組數(shù)為:5723中值為:7替換后的數(shù)列為:667231858214538第3組數(shù)為:72318中值為:18替換后的數(shù)列為:667181858214538第4組數(shù)為:23185中值為:18替換后的數(shù)列為:667181858214538第5組數(shù)為:1858中值為:8替換后的數(shù)列為:667181888214538第6組數(shù)為:5821中值為:8替換后的數(shù)列為:667181888214538第7組數(shù)為:82145中值為:21替換后的數(shù)列為:667181888214538第8組數(shù)為:214538中值為:38替換后的數(shù)列為:667181888213838最終結(jié)果為:667181888213838請(qǐng)改正程序中指定部位的錯(cuò)誤,使它能得出對(duì)的的結(jié)果。#include<stdio.h>#defineN10intfindmid(inta,intb,intc){intt;t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));/**********found**********/returnb;}voidfun(intx[]){inti,a,b,c,t[N];/**********found**********/for(i=0;i<N;i++)t[i]=x[i]for(i=0;i<N-2;i++){a=t[i];b=t[i+1];c=t[i+2];/**********found**********/t[i+1]=findmid(a,b,c);}}main(){inti,x[N]={6,5,7,23,18,5,8,21,45,38};for(i=0;i<N;i++)printf("%d",x[i]);printf("\n");fun(x);for(i=0;i<N;i++)printf("%d",x[i]);printf("\n");}【參考答案】(1)returnt;(2)for(i=0;i<N;i++)t[i]=x[i];(3)x[i+1]=findmid(a,b,c);題目六斐波拉契數(shù)列2.下列給定程序中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第1項(xiàng)起,斐波拉契數(shù)列為:1、1、2、3、5、8、13、21、……例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為13。#include<stdio.h>longfun(intg){/**********found**********/switch(g);{case0:return0;/**********found**********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}(1)去掉分號(hào)(2)case1:case2:return1;題目七鏈表1例如,若給a輸入字符串:ABCDEFGKHIJK,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:ABCDEFGHIJK。N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。#include<stdio.h>voidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/**********found**********/b[k]=p;k++;p++;i++;}if(*p){/**********found**********/b[k++]="";}}b[k]='\0';}main(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}(1)b[k]=*p;(2)b[k]='';k++;題目七鏈表22.下列給定程序中函數(shù)Creatlink的功能是:創(chuàng)建帶頭結(jié)點(diǎn)的單向鏈表,并為各結(jié)點(diǎn)數(shù)據(jù)域賦0到m-1的值。#include<stdio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p->next;}/**********found***********/returnp;}outlink(NODE*h){NODE*p;p=h->next;printf("\n\nTHELIST:\n\nHEAD");while(p){printf("->%d",p->data);p=p->next;}printf("\n");}main(){NODE*head;head=Creatlink(8,22);outlink(head);}(1)p=(NODE*)malloc(sizeof(NODE));(2)returnh;題目七鏈表32.下列給定程序是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)賦值。函數(shù)fun的功能是將單向鏈表結(jié)點(diǎn)(不涉及頭結(jié)點(diǎn))數(shù)據(jù)域?yàn)榕紨?shù)的值累加起來,并且作為函數(shù)值返回。#include<stdio.h>#include<conio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;p=h->next;/*************found**************/while(p->next){if(p->data%2==0)sum+=p->data;/*************found**************/p=h->next;}returnsum;}NODE*creat(yī)link(intn){ NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));for(i=1;i<n;i++){?s=(NODE*)malloc(sizeof(NODE));?s->data=rand()%16; s->next=p->next; p->next=s;?p=p->next;}p->next=NULL;returnh;}outlink(NODE*h){NODE*p;p=h->next;printf("\n\nTheLIST:\n\nHEAD");while(p){printf("->%d",p->data);p=p->next;}printf("\n");}voidmain(){NODE*head;intsum;system("CLS");head=creat(yī)link(10);outlink(head);sum=fun(head);printf("\nSUM=%d",sum);}(1)while(p!=NULL)(2)p=p->next;題目七鏈表42.下列給定程序的功能是:建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不涉及頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。#include<stdio.h>#include<conio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;fun(NODE*h){intmax=-1;NODE*p;/*************found**************/p=h;while(p){if(p->data>max)max=p->data;/*************found**************/p=h->next;}returnmax;}outresult(ints,FILE*pf){fprintf(pf,"\nThemaxinlink:%d\n",s);}NODE*creat(yī)link(intn,intm){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;}outlink(NODE*h,F(xiàn)ILE*pf){NODE*p;p=h->next;fprintf(pf,"\nTheLIST:\n\nHEAD");while(p){fprintf(pf,"->%d",p->dat(yī)a);p=p->next;}fprintf(pf,"\n");}main(){NODE*head;intm;system("CLS");head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf("\nTheRESULT:\n");outresult(m,stdout);}(1)p=h->next;(2)p=p->next;題目八非素?cái)?shù)問題例如,若輸入"Ab,cD",則輸出"AB,CD"。編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過k返回。#include<stdio.h>#include<string.h>char*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if(('a'<=tt[i])||(tt[i]<='z'))/**********found***********/tt[i]+=32;return(tt);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}(1)if((tt[i]>='a')&&(tt[i]<='z'))(2)tt[i]-=32;題目九排序問題12.下列給定程序中函數(shù)fun的功能是:用冒泡法對(duì)6個(gè)字符串進(jìn)行升序排列。#include<stdio.h>#include<string.h>#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){/**************found**************/for(j=i+1,j<6,j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(1stringat(yī)eachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}(1)for(j=i+1;j<6;j++)(2)*(pstr+i)=*(pstr+j);題目九排序問題22.下列給定程序中函數(shù)fun的功能是:把從主函數(shù)中輸入的3個(gè)數(shù),最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在c中。例如,若輸入的數(shù)為:551234,輸出的結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0。#include<stdio.h>voidfun(float(yī)*a,float*b,float*c){/**********found**********/float*k;if(*a<*b){k=*a;*a=*b;*b=k;}/**********found**********/if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c;*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);}(1)floatk;(2)if(*a<*c)題目九排序問題3下列給定程序中函數(shù)fun的功能是:用插入排序法對(duì)字符串中的字符進(jìn)行升序排列。插入法的基本算法是:先對(duì)頭兩個(gè)字符進(jìn)行排序,然后把第三個(gè)字符插入到前兩個(gè)字符中,插入后前三個(gè)字符仍然有序;再把第四個(gè)字符插入到前三個(gè)字符中,……。待排序的字符串已在主函數(shù)中賦予。#include<stdio.h>#include<string.h>#defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlen[aa];for(i=1;i<n;i++){/**********found**********/c=aa[i];j=i-1;while((j>=0)&&(ch<aa[j])){aa[j+1]=aa[j];j--;}aa[j+1]=ch;}}main(){chara[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf("Theoriginalstring:%s\n",a);insert(a);printf("Thestringaftersorting:%s\n\n",a);}(1)n=strlen(aa);(2)ch=aa[i];題目九排序問題42.下列給定程序中,函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生的數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分派的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#include<malloc.h>#defineN10typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/*************found**************/*t=calloc(m,sizeof(STU));for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){for(i=j=0;i<N;i++)if(b[i].s>b[j].s)j=i;/*************found**************/t[k].num=b[j].num;t[k].s=b[j].s;b[j].s=0;}returnt;}outresult(STUa[],FILE*pf){inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s);fprintf(pf,"\n\n");}voidmain(){STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},?? {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}};STU*pOrder;inti,m;system("CLS");printf("*****THERESULT*****\n");outresult(a,stdout);printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf("\nGivethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);}pOrder=fun(a,m);printf("*****THERESULT*****\n");printf("Thetop:\n");for(i=0;i<m;i++)printf("%s%d\n",pOrder[i].num,pOrder[i].s);free(pOrder);}(1)t=calloc(m,sizeof(STU));(2)t[k]=b[j];題目九排序問題5下列給定程序中fun函數(shù)功能是:將n個(gè)無序整數(shù)從小到大排序。#include<stdio.h>#include<stdlib.h>fun(intn,int*a){inti,j,p,t;for(j=0;j<n-1;j++){p=j;/************found************/for(i=j+1;i<n-1;i++)if(a[p]>a[i])/************found************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf("%4d",*z);if(!(i%10))printf("\n");}printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);fun(n,aa);printf("\nA(yù)ftersorting%dnumbers:\n",n);putarr(n,aa);}(1)for(i=j+1;i<n;i++)(2)p=i;題目九排序問題62.下列給定程序中函數(shù)fun的功能是:從p所指字符串中找出ASCII碼值最大的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用fun函數(shù)之前給字符串輸入"ABCDeFGH",調(diào)用后字符串中的內(nèi)容應(yīng)為"eABCDFGH"。#include<stdio.h>voidfun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(max<p[i]) {max=p[i];/**********found**********/?q=p+i?}i++;}/**********found**********/while(q<p){*q=*(q-1);q--;}p[0]=max;}main(){charstr[80];printf("Enterastring:");gets(str);printf("\nTheoriginalstring:");puts(str);fun(str);printf("\nThestringaftermoving:");puts(str);printf("\n\n");}(1)q=p+i;(2)while(q>p)題目九排序問題62.下列給定程序中,函數(shù)fun的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入"edcba",則應(yīng)輸出"abcde"。#include<string.h>#include<stdio.h>voidfun(chart[]){charc;inti,j;/*************found**************/for(i=strlen(t);i;i--)for(j=0;j<i;j++)/*************found**************/?if(t[j]<t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}main(){chars[81];printf("\nPleasee(cuò)nteracharacterstring:");gets(s);printf("\n\nBeforesorting:\n%s",s);fun(s);printf("\nAftersortingdecendingly:\n%s",s);}(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])題目九排序問題72.下列給定程序中函數(shù)fun的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素進(jìn)行升序排列。請(qǐng)修改程序中的錯(cuò)誤,使它能得出對(duì)的的結(jié)果。#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){/************found************/p=j(luò)for(i=j;i<n;i++)if(a[i]<a[p])/************found************/p=j;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}(1)p=j;(2)p=i;題目十平均值問題1例如,若輸入252,則輸出應(yīng)當(dāng)是20。若輸入202,則輸出應(yīng)當(dāng)是0。編寫函數(shù)fun,其功能是:計(jì)算n門課程的平均分,結(jié)果作為函數(shù)值返回。#include<stdio.h>longfun(longnum){/************found************/longk;do{k*=num%10;/************found************/num\=10;}while(num);return(k);}main(){longn;printf("\nPl(wèi)easeenteranumber:");scanf("%ld",&n);printf("\n%ld\n",fun(n));}(1)longk=1;(2)num/=10;題目十平均值問題22.在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中函數(shù)fun的功能是:計(jì)算數(shù)組元素中所有值為正數(shù)的平均值(不涉及0)。例如:數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0,則程序的運(yùn)營(yíng)結(jié)果為19.250000。#include<stdio.h>doublefun(intx[]){/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/************found************/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}(1)doublesum=0.0;(2)sum/=c;題目十平均值問題3?下列程序中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ课鍌€(gè)元素求一個(gè)平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個(gè)數(shù)不是5的倍數(shù),則多余部分忽略不計(jì)。例如,s所指數(shù)組有14個(gè)元素,則只對(duì)前10個(gè)元素進(jìn)行解決,不對(duì)最后的4個(gè)元素求平均值。#include<stdio.h>#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i<SIZE;i++){s[i]=k;k+=2;}/**********found**********/sun=0.0;for(k=0,i=0;i<SIZE;i++){sum+=s[i];/**********found**********/if(i+1%5==0){w[k]=sum/5;sum=0;k++;}}returnk;}main(){doublea[SIZE],b[SIZE/5];inti,k;k=fun(a,b);printf("Theoriginaldata:\n");for(i=0;i<SIZE;i++){if(i%5==0)printf("\n");printf("%4.0f",a[i]);}printf("\n\nTheresult:\n");for(i=0;i<k;i++)printf("%6.2f",b[i]);printf("\n\n");}(1)sum=0.0;(2)if((i+1)%5==0)題目十平均值問題42.下列給定程序中,函數(shù)fun的功能是:從n個(gè)學(xué)生的成績(jī)中記錄出低于平均分的學(xué)生人數(shù),此人數(shù)作為函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。例如,輸入8名學(xué)生的成績(jī):80.5、60、72、90.5、98、51.5、88、64則低于平均分的學(xué)生人數(shù)為4(平均分為75.5625)。#include<stdlib.h>#include<stdio.h>#include<conio.h>#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k<n;k++)/*************found**************/t=s[k];ave=t/n;for(i=0;i<n;i++)if(s[i]<ave)count++;/*************found**************/*aver=&ave;returncount;}voidmain(){floats[30],aver;intm,i;system("CLS");printf("\nPleaseenterm:");scanf("%d",&m);printf("\nPleaseenter%dmark:\n",m);for(i=0;i<m;i++)scanf("%f",s+i);printf("\nThenumberofstudents:%d\n",fun(s,m,&aver));printf("Ave=%f\n",aver);}【參考答案】(1)t+=s[k];(2)*aver=ave;題目十平均值問題52.下列給定程序中,函數(shù)fun的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并記錄平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。請(qǐng)改正程序中的錯(cuò)誤,使其能得出對(duì)的的結(jié)果。#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(floatx[],intn)/************found************/intj,c=0;floatxa=0.0;for(j=0;j<n;j++)xa+=x[j]/n;printf("ave=%f\n",xa);for(j=0;j<n;j++)/************found************/if(x[j]=>xa)c++;returnc;}main(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};system("cls");printf("%d\n",fun(x,8));}(1){intj,c=0;floatxa=0.0;(2)if(x[j]>=xa)題目十一字符串連接1例如,若主函數(shù)中a字符串為"aBCDeFgH",b字符串為"Abcd",則c中的字符串應(yīng)為"aBcdeFgH"。規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的*號(hào)之外,將串中其它*號(hào)所有刪除。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c){/************found************/intk=1;/************found************/while(*p!=*q){if(*p<*q)c[k]=*q;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論