全國計算機考試二級C語言南開100題試題_第1頁
全國計算機考試二級C語言南開100題試題_第2頁
全國計算機考試二級C語言南開100題試題_第3頁
全國計算機考試二級C語言南開100題試題_第4頁
全國計算機考試二級C語言南開100題試題_第5頁
已閱讀5頁,還剩298頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

全國計算機考試二級c語言南開100題

題目1

編一個函數(shù)fun(char*s),函數(shù)的功能是把字符串中的內(nèi)容逆置。

例子如:字符串中原有的內(nèi)容為:abcdefg,則調(diào)用該函數(shù)后,串中的內(nèi)容為:

gfedcba

O

試題程序:

Sinclude<string.h>

ttinclude<conio.h>

Sinclude<stdio.h>

#defineN81

/*注:該題的算法是先分別找出字符串的兩頭,然后同時逐一往中間移動,每移

動一次

都進行兩字符的位置對換,直到中間字符(用s+i<s+n-l-i來控制)。由于s+i

中一個

地址,因此要注意把它的內(nèi)容取出再進行換位。即先進行取內(nèi)容運算*)*/

fun(char*s)

{inti=0,t,n=strlen(s);

for(;s+i<s+n-l-i;i++)

{t=*(s+i);*(s+i)=*(s+n-l-i);*(s+nT-i)=t;}

)

main()

{chara[N];

clrscr();

printf("'Enterastring:");gets(a);

printf(z,Theoriginalstringis:z,);puts(a);

fun(a);

printf(〃\n〃);

printf("Thestringaftermodified:,z);

puts(a);

)

題目2

寫程序,實現(xiàn)矩陣(3行3歹D的轉(zhuǎn)置(即行列互換)。

例如,輸入一面的矩陣:

程序輸出:

試題程序:

Sinclude<stdio.h>

Sinclude<conio.h>

/*這題的關(guān)鍵在于進行行列下標轉(zhuǎn)換的算法,由矩陣的對稱性我們不難看出在進

行行列

互換時a[j]在好是與a[j][i]互換,因而只要我位讓程序走完矩陣的左上角即可

(用

for(i=0;i〈2;i++)再套for(j=i+l;j<3;j++)來完成左上角的走動。*/

intfun(intarray[3][3])

{inti,j,t;

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

for(j=i+l;j<3;j++)

{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}

main()

{inti,j;

intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};

clrscr();

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

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

printfarray[i][j]);

printf("\n");

)

fun(array);

printf("Convertedarray:\n");

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

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

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

printf("\n");

題目3

請編一個函數(shù)fun(int*a,intn,int*odd,int*even),函數(shù)的功能是分別求

11、數(shù)

組中所有奇數(shù)之和以及所有偶數(shù)之和。形參n給了數(shù)組中數(shù)據(jù)的個數(shù):利用指針

odd返回

奇數(shù)之和,利用指針even返回偶婁這和。

例如:數(shù)組中的值依次為:1,8,2,3,11,6;則利用指針odd返回奇數(shù)之和

24;利用

指針even返回偶數(shù)之和80

試題程序。

Sinclude<stdio.h>

Winclude<conio.h>

ttdefineN20

/*注:該題的算法是:用for。循環(huán)一步一步地找元素,用來判斷

是否是奇

數(shù),%運算是求余運算,當對2求余為1時表示原數(shù)為奇數(shù),否則為偶數(shù)。*/

fun(int*a,intn,int*odd,int*even)

{inti;*even=0;*odd=0;

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

if(!(a[i]%2))

*even+=a[i];

else

*odd+=a[i];

main()

{inta[N]={l,9,2,3,11,6},i,n=6,odd,even;

clrscr();

printf(z,Theoriginaldatais:\n〃);

for(i=0;i<n;i++)printf(〃%5d〃,*(a+i));

printf(〃\n\n〃);

fun(a,n,&odd,&even);

printf(z,Thesumofoddnumbers:%d\nz/,odd);

printf(Z/Thesumofevennumber:%d\nzz,even);

題目4

要求程序的功能是:把20個隨機數(shù)存入一個數(shù)組,然后輸出該數(shù)組中的最小值。

中確定最小值的下標的操作在fun函數(shù)中實現(xiàn),請給出該函數(shù)的定義。

試題程序。

Sinclude<stdio.h>

Sinclude<conio.h>

#defineVSIZE20

intvector[VSIZE];

/*注:該題的算法是用一個變量(j)來存儲最小值元素的下標,在循環(huán)過程中讓

每個元

素都與原最小值元素進行大小比較(if(list[iklist[j]),如發(fā)現(xiàn)更小的則讓j

重新

擁有最小值元素的下標(j=i)o*/

intfun(intlist[],intsize)

{inti,j=0;

for(i=l;i<size;i++)

if(list[i]<list[j])

j=i;

returnj;

)

main()

(

inti;

clrscr();

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

{

vector[i]=rand();

printf(""Vector[%d]=%6d\n/,,i,vector[i]);

)

i=fun(vector,VSIZE);

printf(/z\nMininum:vector[%d]=%6d\nzz,i,vector[i]);

)

題目5

請編一個函數(shù)floatfun(doubleh),函數(shù)的功能是對變量h中的值保留2位

小數(shù),并

對第三位進行四舍五入(規(guī)定h中的值為正數(shù))。

例如:h值為8.32433,則函數(shù)返回8.32;

h值為8.32533,則函數(shù)返回&33。

試題程序。

Sinclude<stdio.h>

Winclude<conio.h>

/*注:h乘以1000后正好是原小數(shù)點后第三位做了新數(shù)的個位數(shù),然后再進行

加5運算時

□如原小數(shù)點后第三位為4及以下則加5后還是不能進一位(即四舍),如是5

及以上則加

5后該位就要向前進一位數(shù)(即五入)。進行加5運算后除10再賦給一個整型

變量此時就

只有原小數(shù)點第二位及以前各位保留在整型變量中,最后再對整型變量除100,

這樣又出

現(xiàn)了兩位小數(shù)。該題中,進行四舍五入后一定要賦給一個整型變量才能將不用部

分徹底

變成0。*/

floatfun(floath)

{longt;

h=h*1000;

t=(h+5)/10;

return(float)t/100;

mainO

(

floata;

clrscr();

printf("'Entera:〃);scanf(〃%f〃,&a);

printf(zzTheoriginaldatais:z,);

printfC%f\n\n,,,a);

printf(Z/Theresult:%6.2f\nz,,fun(a));

)

題目6

編寫函數(shù)fun,函數(shù)的功能是:從字符串中刪除指定的字符。同一字母的大、

小寫按

不同字符處理。

若程序執(zhí)行時,輸入字符串為:turbocandBorlandc++

從鍵盤上輸入字符:n,則輸出后變?yōu)椋簍urbocadborladc++

如果輸入的字符串不存在,則字符串照原樣輸出。

試題程序。

^include<stdio.h>

Sinclude<conio.h>

/*注:該題的算法是讓i控制一個一個字符往后走,在移動過程中如果s[i]不

是要刪的字

符,則將其按順序放到新串中(新串亦是用s來做,只是用k來控制新串的下標,

由于要

刪除一些元素,因此新串的下標總是比原下標i要慢。因而可用此法即同一字符

串變量的

方法。*/

intfun(chars[],intc)

{inti,k=0;

for(i=0;s[i];i++)

if(s[i]!=c)s[k++]=s[i];

s[k]='\0';

}

mainO

{staticcharstr[]=,,turbocandborlandc++〃;

charch;

clrscr();

printf(〃:%s\n〃,str);

printf(,/:〃);

scanf("%c〃,&ch);

fun(str,ch);

printf("str[]=%s\n”,str);

題目7

請編寫一個unsignedfun(unsignedw),w是一個大于10的無符號整數(shù),若w

是n(n

>=2)位的整數(shù),函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。

例如:w值為5923,則函數(shù)返回923;w值為923則函數(shù)返回23。

試題程序。

^include<conio.h>

Sinclude<stdio.h>

/*注:由于unsigned型整數(shù)在0-65535這間,只要它大于10000則對10000

求余即得出后

面4位,否則如果大于1000則對1000求余得出后3位數(shù),這樣一層一層往小的

判斷。由于

return的作用除了返回值以外,還有當執(zhí)行到retum時就跳出該程序,所以可

以連續(xù)的

用if()語句。*/

unsignedfun(unsignedw)

{if(w>=10000)returnw%10000;

if(w>=1000)returnw%1000;

if(w>=100)returnw%100;

returnw%10;

)

main()

{unsignedx;

printf("enteraunsignedintegernumber:

scanf(,&x);

if(x<10)printf("dataerror!;

elseprintf("theresult:%u\n”,fun(x));

)

題目8

編寫函數(shù)intfun(intlim,intaa[MAX]),該函數(shù)的功能是求出小于lim的所

有素數(shù)

并放在aa數(shù)組中,該函數(shù)返回所求出素數(shù)的個數(shù)。

試題程序。

Sinclude<stdio.h>

Winclude<conio.h>

#defineMAX100

/*注:循環(huán)for(i=2;i<k;i++)用于判斷k是否為素數(shù),原理是當用2到k-1這

間的數(shù)去

對k求余,如余數(shù)為0(即被整除)則表示k不是一個素數(shù)。語句if(i>=k)用于

判斷在

上一個for()循環(huán)中i能否走到k,如果能則表示在2到k-1的數(shù)都不能整除k,

即k為素數(shù)。

*/

intfun(intlim,intaa[MAX])

{inti,j=0,k;

for(k=2;Klim;k++)

{for(i=2;i<k;i++)

if(!(k%i))break;

if(i>=k)aa[j++]=k;

)

returnj;

}

main()

{intlimit,i,sum;

intaa[MAX];

printf(/z\ninputaintegernumber:,z);

scanf(,z%dz,,&limit);

sum=fun(limit,aa);

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

{if(i%10==0&&i!=0)

printf("\n");

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

)

)

題目9

請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。

二維

數(shù)組中的值在主函數(shù)中賦予。

例如:二維數(shù)組中的值為

則函數(shù)值為61。

試題程序。

#include<conio.h>

#include<stdio.h>

SdefineM4

^defineN5

/*注:該題的第一個for()循環(huán)是計算矩陣的最上一行和最下一行的總和,第二

個for()

是計算除兩頭元素以外的最左一列和最右一列的元素的和,最后sun就是周邊元

素的和。

*/

intfun(inta[M][N])

{intsum=0,i;

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

sum+=a[0][i]+a[M-l][i];

for(i=l;i<M-l;i++);

sum+=a[i][0]+a[i][NT];

returnsum;

)

main()

{intaa[M][N]={{1,3,5,7,9},

{2,9,9,9,4},

{6,9,9,9,8},

(1,3,5,7,0}):

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

{for(j=0;j<N;j++)printf("%6d”,aa[i][j]);

printf("\n");

)

y=fun(aa);

printf(/z\nThesum:%d\n”,y);

printf("\n");

題目10

請編寫函數(shù)fun,對長度為7個字符的字符串,除首、尾字符外,將其余5個字

符按

降序排列。例如,原來的字符串為CEAedca,排序后輸出為CedcEAa。

試題程序。

Sinclude<string.h>

Sinclude<conio.h>

Sinclude<stdio.h>

/*該題采用的排序法是選擇法進行降序排序,算法是用外for()循環(huán)從字符串的

前端往后端走動,每走動一個字符都用內(nèi)嵌的for()循環(huán)在該字符后找出最小

的字符與該字符進行換位。直到外for。循環(huán)走到最后一個字符。此外,此題還

要注意把首尾字符除開,即在最外層for。循環(huán)中從1開始,只到num-2即可。

*/

intfun(char*s,intnum)

{inti,j,t;

for(i=l;i<num-2;i++)

for(j=i+l;j<num-l;j++)

if(s[i]<s[j])

{t=s[i];

s[i]=s[j];

s[j]=t;

)

main()

{chars[10];

clrscr();

printf("輸入7個字符的字符串:“);

gets(s);

fun(s,7);

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

)

題目11

請編一函數(shù)voidfun(inttt[M][N],intpp[N]),tt指向一個M行N列的二維

數(shù)組,

求出二維數(shù)組每列中最小元素,并依次放入pp所指?維數(shù)組中,二維數(shù)組中的

數(shù)已在主

函數(shù)中賦予。

試題程序。

Sinclude"conio.h"

^include"stdio.h"

#defineM3

#defineN4

/*注:該題用for(i=0;i〈N;i++)來控制一列一列地找,而內(nèi)嵌循環(huán)for(j=0;j<M;

j++)用于控制同列內(nèi)元素的比較。多重循環(huán)的嵌套總是最里層循環(huán)變化最快,即

外層循環(huán)改變一個值,內(nèi)層循環(huán)就要循環(huán)完一次,對于多重循環(huán)一定要好好去體

會和理解,在多數(shù)題目中都要用到多重循環(huán)(一般為二重)。*/

voidfun(inttt[M][N],intpp[N])

{inti,j;

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

{pp=tt[0][i];

for(j=0;j<M;j++)

if(tt[j][i]<pp[i])pp[i]=tt[j][i];

main()

{intt[M][N>{{22,45,56,30},

{19,33,45,38},

{20,22,66,40}};

intp[N],i,j,k;

clrscr();

printf(,/theoriginaldatais:\n");

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

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

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

printf("\n");

)

fun(t,p);

printf("\ntheresultis:\n");

for(k=0;k<N;k++)

printf("Md",p[k]);

printf('\n");

)

題目12

寫一個函數(shù),從傳入的num個字符串中找出最長的一個字符串,并通過形參指

針max

傳回該串地址。(注意:用****作為結(jié)束輸入的標志。)

試題程序。

ftinclude"stdio.h"

#include"string,h”

Sinclude"conio.h"

/*函數(shù)strlenO用于求出字符串的長度,這個題中主要是*max=p;不能換成

max=&p

;如果用maz=&p;則只改變了max的指向,它不能傳回給實參。因此我們要改變

max指

向地址中的內(nèi)容,這才能使得實參ps有正確的值。*/

fun(char(*a)[81],intnum,char**max)

{char*p=a[0];inti;

for(i=l;i<num;i++)

if(strlen(a[i])>strlen(p))

P=a[i];

*max=p;

mainO

{charss[10][81],*ps;

intn,i=0;

clrscr();

printf("enterstring:\nz,);

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0)

{

i++;

gets(ss[i]);

puts(ss[i]);

)

n=i;

fun(ss,n,&ps);

printf(,z\nmax=%s\nz/,ps);

題目13

請編一個函數(shù)fun,其中n所指存儲單元中存放了數(shù)組中元素的個數(shù)。函數(shù)的

功能是

:刪除所有值為y的元素。數(shù)組元素中的值和y的值由主函數(shù)通過健盤讀入。

試題程序。

Sinclude<conio.h>

Sinclude<stdio.h>

#defineM20

/*注:該題的算法是,用for。循環(huán)控制元素逐一判斷數(shù)組元素是否等于y,若

不等則賦

給新數(shù)bb,由于刪除的關(guān)系j總是小于或等于i,故而可用bb作為新數(shù)組,與

第6題相似。

還要注意*n=j;如果沒有這個語句則不能傳回新數(shù)組的個數(shù),另外也不能換成

n=&j

;這點是用指針時常犯的錯誤,切記!*/

voidfun(intbb[],int*n,inty)

{inti,j=0;

for(i=0;i<*n;i++)

if(bb[i]!=y)bb[j++]=bb[i];

*n=j;

)

mainO

{intaa[M],n,y,k;

printf(,z\npleaseentern:");

scanf(〃%d〃,&n);

printf(z,\nenter%dpositivenumber:\n,,,n);

for(k=0;k<n;k++)scanf(〃%d〃,&aa[k]);

printf(zztheoriginaldatais:\n〃);

for(k=0;k<n;k++)printf(z,%5d〃,aa[k]);

printf(z,\nenteranumbertodeleted:,/);

scanf(〃%d〃,&y);

fun(aa,&n,y);

printfC'thedataafterdeleted%d:\n〃,y);

for(k=0;k<n;k++)printf(〃%4d〃,aa[k]);

printf(〃\n〃);

)

題目14

編寫一個函數(shù),該函數(shù)可以統(tǒng)計一個長度為2的字符串在另一個字符串中出現(xiàn)

的次數(shù)

o例如,假定輸入的字符串為:asdasasdfgasdaszx67asdmklo,子字符串

為:as

,則應(yīng)輸出6。

試題程序。

Sinclude"stdio.h〃

ttinclude"string.h〃

Sinclude〃conio.h〃

/*注:由于小串中只有2個字符所以可用str[i]==sbustr[0]&&str[i+l]==subs

tr[l]來判斷小串是否與長串當前位置(str[i])相同(即出現(xiàn)一次)。因而只

要讓長串

當前位置逐一向后移即可(用for()循環(huán)來完成)。*/

intfun(char*str,char*substr)

{inti,n=0,s=strlen(str);

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

if((strLi]==substr[0])&&(str[i+l]==substr[1]))

n++;

returnn;

)

main()

(

charstr[81],substr[3];

intn;clrscr();

printf(z/enter1:〃);

gets(str);

printf(zzenter2:〃);

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf(〃叩%d\n〃,n);

)

題目15

請編寫一個函數(shù)intfun(intx),它的功能是:判斷整數(shù)x是否是同構(gòu)數(shù)。若

是同構(gòu)

數(shù),函數(shù)返回1;否則返回0。

所謂“同構(gòu)數(shù)”是指這樣的數(shù),它出現(xiàn)在它的平方數(shù)的右邊。

例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。

x的值由主函數(shù)從健盤讀入,要求不大于100o

試題程序。

Sinclude〃conio.h〃

Sinclude"stdio.h〃

/*注:由“同構(gòu)數(shù)”的定義可得只要求出平方數(shù)或平方數(shù)的最后一位或平方數(shù)的

最后兩

位然后與x進行判斷即可,分別求余后即得出平方數(shù)的右邊。*/

intfun(intx)

{intxx=x*x;

if(xx==x//xx%10==x//xx%100==x)return1;

elsereturn0;

)

mainO

{intx,y;

clrscr();

printfC'\npleaseenteraintegernumbers:〃);

scanf(〃%d〃,&x);

if(x>100){printf("dataeror!\n,/);exit(0);}

y=fun(x);

if(y)printfC%dyes\n〃,x);

elseprintf(〃%dno!\n,z,x);

)

題目16

請編寫函數(shù)fun,函數(shù)的功能是:在字符串中所有數(shù)字字符前加一個$字符。

例如,輸入:A1B23CD45,則輸出為:A$lB$2$3CD$4$5o

注意:部分源程序給出如下。

Sinclude<stdio.h>

/*注:該題用while。循環(huán)來控制原字符串從頭走到尾,在走動過程中判斷是當

前字符是否是數(shù)字,若是則在新串中先連一個'$'然后再連原字符,否則直接連

原字符。一定要注意指針和下標的變化。最后要把新串拷貝到s所指的地址中,

注意不能用s=a;若用了,則實參數(shù)組還是原字符串。*/

voidfun(char*s)

{chara[100];

inti=0;

while(*s)

if(*s>='O'&&*s<='9'){a[i++]='$';a[i++]=*s++;}

elsea[i++]=*s++;

a-\0,;

strcpy(s,a);

)

main()

{chars[80];

printf(,zenterastring:z/);

scanf(〃%s〃,s);

fun(s);

printf(/ztheresult:%s\n〃,s);

)

題目17

請編一個函數(shù)fun(char*s),函數(shù)的功能是把字符串中所有的字符前移一個位

置,

串中的第一個字符移到最后。

例如:原有的字符串為:Mn.123xyZ,則調(diào)用該函數(shù)后,串中的內(nèi)容為:n.123xyZMo

試題程序。

ttinclude"conio.h〃

Sinclude"stdio.h〃

#defineN81

/*注:該題要先將字符串的頭元素存到某一變量(用c=*s)中,然后后面的字

符依向前

移(用for()循環(huán)),要記得在串的未尾加一個結(jié)束符。*/

fun(char*s)

{charc=*s;

for(;*(s+l);s++)

*s=*(s+l);

*s=c;

*(s+l)='\0';

mainO

{chara[N];

clrscr();

printf(z/enterastring:");

gets(a);

printf(zztheoriginalstringis:〃);

puts(a);

fun(a);

printf("thestringaftermodified:");

puts(a);

題目18

請編寫函數(shù)fun,函數(shù)的功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx所

指數(shù)組

中,非素數(shù)的個數(shù)通過k傳回。

例如,若輸入:17,則應(yīng)輸出:9和468910121415160

試題程序。

^include<conio.h>

Sinclude<stdio.h>

/*注:內(nèi)嵌的for()循環(huán)用于判斷是否是素數(shù),在的情況下,只要j對i

求余,余

數(shù)為0則表示i不是素數(shù),則將i存入xx數(shù)組中。break;語句只是讓它提前結(jié)

束循環(huán)。不用

亦可。*/

voidfun(intm,int*k,intxx[])

{inti,j;

*k=0;

for(i=2;i<m;i++)

for(j=2;j<i;j++)

if(i%j==0)

{xx[(*k)++]=i;break;}

}

mainO

{intm,n,zz[100];

printfC'\npleaseenteranintegernumberbetween10and100:〃

);

scanf(〃%d〃,&n);

fun(n,&m,zz);

printf(〃\n\nthereare%dnon-primenumberslessthan%d:〃,m,

n);

for(n=0;n<m;n++)

printf(zz\n%4d〃,zz[n]);

題目19

請編一個函數(shù)fun(char*s),函數(shù)的功能是把字符串中所有的字母改寫成該字

母的

下一個字母,最后一個字母z改寫成字母a。大寫字母仍為大寫字母,小寫字母

仍為小寫

字母,其他的字符不變。

例如:原有的字符串為:Mn.123zyZ,則調(diào)用該函數(shù)后,串中的內(nèi)容為:No.123yzAo

試題程序。

Sinclude"conio.h〃

ttinclude"string.h〃

ttinclude"stdio.h〃

Sinclude"ctype.h〃

#defineN81

/*該題的思路較為明顯,用for()循環(huán)一個字符一個字符地走動,移動過程中

判斷是否

在a到y(tǒng)之間,若是則加1(即下移一個字母),若是z則換成對應(yīng)的a*/

fun(char*s)

{inti,n=strlen(s);

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

{if((s[i]>='A'&&s[i]<,Z')〃(s[i]>='a'

It;'z'))

s[i]=s[i]+l;

elseif(s[i]==,z)s[i]=,a;

elseif(s[i]=='Z')s[i]=,A,;

)

)

mainO

{chara[N];

clrscr();

printf(zzenterastring/');gets(a);

printf("theoriginalstringis:,/);puts(a);

fun(a);

printf("thestringaftermodified:z,);

puts(a);

題目20

請編寫函數(shù)fun,函數(shù)的功能是:將s所指字符串中、下標為奇數(shù)位置上的大寫

字母

轉(zhuǎn)換為字母序列中的下一個小寫字母;若該位置上是小寫字母,則不轉(zhuǎn)換;若該

位置上

是大寫字母Z,則僅轉(zhuǎn)換成小寫字母z。

例如,輸入:ABCdxZZZ,則輸出為:AcCdXzZzo

試題程序。

Sinclude"stdio.h"

#defineN80

/*該題的算法與上一題相似,注意同一個字母小寫要比大寫在ASCH值上大32。

*/

voidfun(char*s)

{

inti;

for(i=l;i<N;i=i+2)

if(s[i]>='A'&&s[i"'Z')

s[i]+=32+l;

elseif(s[i]==,Z')s[i]+=32;

main()

{

chars[N];

printf("\nenterastring:");scanfs);

fun(s);

printf(/z\ntheresult:%s\nz/,s);

題目21

程序定義了N*N的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能

是:

給數(shù)組周邊元素置0值。

例如:a數(shù)組中的值為

則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<stdio.h>

Sinclude<conio.h>

ttinclude<stdlib.h>

#defineN5

/*由于是賦值0,因而只要能表示出周邊元素即好辦,它與求和不同在于求和

不能重復

對某個元素進行運算,而賦值則可重復賦值。所以這里只用了一個for()循環(huán)來

找出所有

的周邊元素。*/

fun(intw[][N])

{inti;

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

{w[i][0]=0;

w[i][N-l]=0;

w[0][i]=0;

w[N-l][i]=0;

)

main()

{inta[N][N],i,j;

clrscr();

printf(''*****Thearray*****\n〃);

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

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

{a[i][j]=rand()%10;

printf(飛4d”,a[i][j]);

}

printf("\n");

)

fun(a);

printf(''*****Theresult*****\n");

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

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

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

printf("\n");

)

}

題目22

請編寫函數(shù)fun,它的功能是:求出ss所指字符串中、指定字符的個數(shù),并返

回此

值。

例如:若輸入字符串:123412132,輸入字符為:1,則輸出:30

試題程序。

#include<conio.h>

#include<stdio.h>

ttdefineM81

/*注:本題用while。循環(huán)來控制字符的移動,每移動一個字符都要進行判斷

(if(*ss

==c))是否為指定的字母,若是則個數(shù)加1。這里要注意如何讓SS指針向下走

動(ss++)

□*/

intfun(char*ss,charc)

{intnum=O;

while(*ss!=,\0")

{if(*ss==c)num++;

ss++;

)

return(num);

)

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastrint:/z);gets(a);

printf("\nPleaseenterachar:");ch=getchar();

printf('\nThenumberofthecharis:%d\nz,,fun(a,ch));

)

題目23

程序定義了N*N的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能

是:

求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的So

例如:a數(shù)組中的值為

則返回主程序后s的值應(yīng)為:3.3750

試題程序。

Sinclude<stdio.h>

Sinclude<conio.h>

Sinclude<stdlib.h>

#defineN5

/*注意不能重復計算,它與題21不同,第一個for()循環(huán)求出第一列與最后一

列的和,

第二個for()循環(huán)求出第一行與最后一行(已除去兩頭元素),要注意第二個

for()中起

始為b最后為N-2o*/

doublefun(intw[][N])

{inti,t=0;

doubles=0;

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

{s+=w[i][0]+w[i][N-l];t+=2;}

for(i=l;i<N-l;i++)

{s+=w[0][i]+w[N-l][i];t+=2;}

s=s/t;

returns;

)

main()

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

inti,j;

doubles;

clrscr();

printf(〃*****Thearray*****\n〃);

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

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

printf(z/%4dz,,a[i][j]);

printf(〃\n〃);

}

s=fun(a);

printf(〃*****Theresult*****\n〃);

printfC'Thesumis%lf\n〃,s);

)

題目24

編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat)

O

例如,分別輸入下面兩個字符串:

FirstSrting-

SecondString

程序輸出:

FirstString一SecondString

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<stdio.h>

#include<conio.h>

/*注:第一個for()循環(huán)用于讓i成為第一個字符串的結(jié)束符的下標,要注意

在這個for

()后要有一個分號否則出錯。第二個for()的作用是將第二個字符串一個一個字

符依次放

到第一個字符串的末尾。止匕外,還要注意最后一定要有來給字符

串加上

結(jié)束符。*/

voidfun(charpl[],charp2[2)

{inti,j;

for(i=0;pl[i];i++);

for(j=0;p2[j];j++)

pl[i++]=p2[j];

pl[i]=\0';

)

main()

{charsl[80],s2[80];

clrscr();

printf("/Entersiands2:\n");

scanf("%s%s”,si,s2);

printf(,,sl=%s\n//,si);

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

printf(z/Invokefun(si,s2):\n");

fun(si,s2);

printf(,zAfterinvoking:\n??);

printf(z/%s\nz,,si);

)

題目25

程序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(inta[][N]

),函數(shù)的功能是:使數(shù)組第一列元素中的值與最后一列元素中的值對調(diào)、第二

列元素的

值與倒數(shù)第二列中的值對調(diào)、……、其他依次類推。

例如:a數(shù)組中的值為

則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<stdlib.h>

Sinclude<conio.h>

Sinclude<stdio.h>

^defineN5

/*本題的第一個for()循環(huán)用于控制行,而內(nèi)嵌的for()用于在同一行中將列與

列對調(diào),

當i為0時a[m][i]為第m行的第一列元素,a[m][NT-i]為第m行的最后一列

的元素,正好

符合調(diào)換的要求。依次類推。*/

intfun(inta[][N])

{inti,m,t;

for(m=0;m<N;m++)

for(i=0;i<N/2;i++)

{t=a[m][i];

a[m][i]=a[m][N-l-i];

a[m][N-l-i]=t;

)

)

main()

{inta[N][N],i,j;

clrscr();

printf(''*****Thearray*****\n〃);

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

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

{a[i]Lj]=rand()%30;printf(z,%4dz,,a[i][j]);}

printf("\n");

)

fun(a);

printf(''*****Theresult*****\n");

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

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

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

printf("\n");

)

)

題目26

請編寫函數(shù)fun,函數(shù)的功能是:實現(xiàn)B=A+A,,即把矩陣A加上A的轉(zhuǎn)置,存

放在矩

陣B中。計算結(jié)果在main函數(shù)中輸出。

例如:輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

程序輸出:

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<conio.h>

#include<stdio.h>

/*26題:本題沒有先求出A的轉(zhuǎn)置,而是直接利用轉(zhuǎn)置的性質(zhì)(即第一行作為

轉(zhuǎn)置后的

第一列,第二行作為轉(zhuǎn)置后的第二列,的行列互換的性質(zhì))。而且最后要求出兩

矩陣的

相加后得出的新矩陣,由轉(zhuǎn)置性質(zhì)可知原轉(zhuǎn)置后位置為在表

達式:b[

i][j]=a[i][i]第一個a為A的元素,第二個a為A'的元素。*/

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

{inti,j;

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

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

b[i][j]=a[i][j]+a[j][i];

)

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");

)

題目27

序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(int

a[][N]),

函數(shù)的功能是:使數(shù)組第一行元素中的值與最后一行元素中的值對調(diào)、第二行元

素的值

g倒數(shù)第二行中的值對調(diào)、……、其他依次類推。

例如:a數(shù)組中的值為

則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<stdlib.h>

Sinclude<conio.h>

ttinclude<stdio.h>

^defineN5

/*27題:該題與25題相似,外層for()循環(huán)用于控制一列一列地移動,內(nèi)嵌的

forr()循

環(huán)用于控制在同一列內(nèi)對應(yīng)行元素的對調(diào)。為第m列第i行元素,而

a[N-l-i][m]

為第m列倒數(shù)第i行的元素,正好需要對調(diào)。*/

fun(inta[][N])

{inti,m,t;

for(m=0;m<N;m++)

for(i=0;i<N/2;i++)

{t=a[i][m];

a[i][m]=a[N-l-i][m];

a[N-l-i][m]=t;

main()

{inta[N][N],i,j;

clrscr();

printf(〃*****Thearray*****\n〃);

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

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

{a[i][j]=rand()%30;printf(〃%4d〃,a[i][j]);}

printf(〃\n〃);

)

fun(a);

printf(〃*****Theresult*****\n〃);

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

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

printfCz%4dz/,a[i][j]);

printf(〃\n〃);

}

題目28

m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平均

分的

人數(shù)作為函數(shù)值返回。

例如,當score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、10、80、90、時,

函數(shù)返

回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為:10、20、30、40。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<string.h>

Sinclude<conio.h>

ttinclude<stdio.h>

/*28題:第一個for()循環(huán)用來計算score數(shù)組中分數(shù)的總和,然后用aver/初

求出平均

值,第二個循環(huán)用來找出小于平均分的元素,并放到數(shù)組below中,這里要注意

j的遞增

方式。*/

intfun(intscore[],intm,intbelow[])

{inti,j=0,aver=0;

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

aver+=score[i];

aver/=m;

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

if(score[i]<aver)

below[j++]=score[i];

returnj;

)

mainO

{inti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,80,90);

clrscr();

n=fun(score,9,below);

printf(,?\nBelowtheaveragescoreare:〃);

for(i=0;i<n;i++)printf("%4d”,below[i]);

題目29

程序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(inta[][N]

),函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。

例如:a數(shù)組中的值為

,則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

/*29題:該題的關(guān)鍵是如何表示出左下半角的元素,當從上往下到第i行時只

有左邊的

i個元素要置為0(每行總是如此)。用外層for()來控制行而內(nèi)嵌的for()來控

制每行的

左邊元素,故而在內(nèi)嵌for。中j最大只能循環(huán)到i(即表示出第i行左邊的i

個元素)。*

/

intfun(inta[][N])

{inti,j;

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

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

a[i][j]=0;

)

main()

{inta[N][N],i,j;

clrscr();

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

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

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

{a[i][j]=rand()%10;printf("%4d",a[i][j]);}

printf('\n");

)

fun(a);

printf("Theresult'd');

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

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

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

printf("\n");

)

)

題目30

請編寫函數(shù)fun,經(jīng)的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同

時補7和

11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<conio.h>

#include<stdio.h>

/*30題:該題關(guān)鍵就是如何表示能被7或11整除,但不能同時被7和11整除。

用(說7==

0)〃(i%ll==0)來表示能被7或11整除,用!((設(shè)7==0)&&(設(shè)11==0))來表示不

同時被7和11整除。

voidfun(int*a,int*n)

{inti,m=0;

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

if(((i%7==0)//(i%ll==0))&&!((i%7==0)&&(i%U==0)))

{a[m]=i;m+=l;}

*n=m;

)

main()

{intaa[1000],n,k;

clrscr();

fun(aa,&n);

for(k=0;k<n;k++)

if((k+l)%10==0)printf("\n");

elseprintf(z,%d,",aa[k]);

題目31

程序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(int

,函數(shù)的功能是:使數(shù)組右上半三角元素中的值全部置成0。

例如:a數(shù)組中的值為

,則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

Sinclude<stdio.h>

#include<conio.h>

Sinclude<stdlib.h>

#defineN5

/*31題:該題的關(guān)鍵亦是在如何表示右上半角,當從上往下到第i行時要從第

i列(所

以內(nèi)嵌for()的j從i開始循環(huán))開始替換直到最后一列,本題用外層for。來

控制行,而

用內(nèi)嵌的for()來控制在每一行內(nèi)右邊元素置0。

intfun(inta[][N])

{inti,j;

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

for(j=i;j<N;j++)

a[i][j]=0;

)

main()

{inta[N][N],i,j;

clrscr();

printf("*****Thearray*****\n〃);

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

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

{a[i][j]=rand()%20;printf("%4d",a[i][j]);}

printf("\n");

}

fun(a);

printf("THERESULT'n");

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

{for(j=0;j<N;j++)printf("%4d",a[i][j]);

printf('\n");

題目32

編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不

是偶

數(shù)的各整數(shù),并放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x中的值為:30,則有4個數(shù)符合要求,它們是

1,3,5,15o

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<conio.h>

#include<stdio.h>

/*32題:由于要求的數(shù)不能是偶數(shù)故編程時從1開始循環(huán)而步長為2這樣正好

保正i永遠

的奇數(shù)。這里也要注意存放結(jié)果的數(shù)組PP的下標變化方式。*/

voidfun(intx,intpp[],int*n)

{inti,j=0;

for(i=l;i<=x;i=i+2)

if(x%i==0)

pp[j++]=i;

*n=j;

)

main()

{intx,aa[1000],n,i;

printf(/z\npleaseenteranintegernumber:\n");scanf("%d

”,&x);

fun(x,aa,&n);

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

printf(/z%d”,aa[i]);

printf("\n");

)

題目33

序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(int

ntn),函數(shù)的功能是:使數(shù)組右上半三角元素中的值乘以m。例如:若m的值

為2,a數(shù)組

中的值為

,則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<stdio.h>

Sinclude<conio.h>

Sinclude<stdlib.h>

#defineN5

/*33題:該題的關(guān)鍵也是在如何表示右上半角(可以與31題相同),本題采

用的是在一

行內(nèi)從最后一列的元素開始往前乘,只有「與時才改變(原理與31題相同)。

*/

intfun(inta[][N],intm)

{inti,j;

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

for(j=N-l;j>=i;j—)

a[i]

)

main()

{inta[N][N],m,i,j;

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

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

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

{a[i][j]=rand()%20;printf("%4d",a[i][j]);}

printf("\n");

)

dom=rand()%10;while(m>=3);

printf("m=%4d\n”,m);

fun(a,m);

printf(z/theresult\n");

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

{for(j=0;j<N;j++)printf(級4d”,a[i][j]);

printf("\n");

)

)

題目34

編寫一個函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計在tt字符串中‘a(chǎn)'至『z'

26

個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如,當輸入字符串:abcdefgabcdeabc后,程序的輸出結(jié)果應(yīng)該是:

33322110000000000000000000

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

#include<conio.h>

#include<stdio.h>

/*34題:本題采用的是字母的ASCH碼值與數(shù)組pp下標的對應(yīng)轉(zhuǎn)換關(guān)系分別

求出對應(yīng)字

母的個數(shù)。第一個for()是給pp賦初值0,第二個for。用于控制在字符串內(nèi)從

頭到尾移動

o由于字母'a'的ASCH碼值為97而它的個數(shù)要放在pp[0]中,而'a'-97的值正

好為0

,其它的依此類推。*/

voidfun(char*tt,intpp[])

{inti;

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

pp[i]=o;

for(;*tt;tt++)

if(*tt<=,z'&&*tt>='a)

pp[*tt-97]++;

}

main()

{charaa[1000];

intbb[26],k;

clrscr();

printf("\nPleaseenteracharstring:");scanf(“*s",aa)

T

fun(aa,bb);

for(k=0;k<26;k++)printfbb[k]);

printf("\n");

)

題目35

序定義了N*N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(int

a[][N],in

tn),函數(shù)的功能是:使數(shù)組左下半三角元素中的值乘以n。例如:若n的值為

2,a數(shù)組

中的值為

,則返回主程序后a數(shù)組中的值應(yīng)為

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其它函數(shù)中的任何去何內(nèi)容,僅在函數(shù)fun的花括號中

填入你編寫

的若干語句。

試題程序。

^include<stdio.h>

Sinclude<conio.h>

Winclude<stdlib.h>

^defineN5

/*35題:本題與29題相似,只要能表示出左下半角的元素即可。*/

intfun(inta[][N],intn)

{inti,j;

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

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

a[i][j]*=n;

)

main()

{inta[N][N],n,i,j;

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

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

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

{a[i][j]=rand()%10;printf(z,%4d/z,a[i][j]);}

printf("\n");

}

don=rand()%10;while(n>=3);

printf(/zn=%4d\n”,n);

fun(a,n);

printf(''****theresult****\n");

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

{for(j=0;j<N;j++)printf("%4d”,a[i][j]);

printf("\n");

)

)

題目36

數(shù)fun的功能是:將兩個兩位數(shù)的整數(shù)a、b合并形成一個整數(shù)放在c中。合并

的方式

是:將a的十位和個位數(shù)依次放在

溫馨提示

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

最新文檔

評論

0/150

提交評論