c语言字符串的题库,C考试系统题库含答案程序题
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
F4.下面程序的功能是計算100至1000之間有多少個數其各位數字之和是5。 #include “stdio.h”
void main()
{
int i,s,k,count=0;
for(i=100;i<=1000;i++)< p="">
{
s=0;
k=i;
while(k)
{
s=s+k%10;
k=;
}
if()count++;
}
printf(“%d”,count);
3
}
F5下列程序功能是求數組中主對角線元素之和,請補充完成
main()
{ int a[3][3],i,j,s=0;
for( i=0;i<3;i++ )
for( j=0;j<3;j++)< p="">
scanf("%d",);
for(i=0;i<3;i++)< p="">
for( j=0;j<3;j++)< p="">
if()
s+=a[i][j];
printf("s=%d\n",s);
}
R6. 下面程序的功能是:輸入一個字符,如果它是一個大寫字母,則把它變成小寫字母,如果它是一個小寫字母,則把它變成大寫字母,其它字符不變,請將程序補充完整:
main()
{ char ch;
scanf(“%c”,&ch);
if (ch>=’A’ && ch <=’Z’) ch=ch+32;
else if (=?a? && ch <=?z?>)
< ch=ch-32>;
printf(“%c”,ch);
}
R7. 請將用戶輸入的x,y,z三個整數按照從小到大的順序排列
main()
{
int x,y,z,t;
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{ t=y;y=x;x=t;}
if(z>)
{t=z;z=x;x=t;}
if(z>)
4
{t=y;y=z;z=t;}
printf("small to big: %d,%d,%d\n",x,y,z);
}
F8. 以下程序從讀入的整數數據中,統計大于零的整數個數和小于零的整數個數。用輸入零來結束輸入,程序中用i統計大于零的個數,用變量j統計小于零的整數。請填空。
void main()
{ int n,i,j;
i=0;j=0;
printf(“Enter INT numbers,with 0 to end\n”);
scanf(“%d”,&n);
while()
{ if (n>0) i=i++;
if (n<0) j=j++;
;
}
printf(“i=%4d j=%4d\n”,i,j);
}
F9. 以下程序用“輾轉相除法”來求出兩個正整數的最大公約數。請填空。若兩個數分別放在m和n中,求最大公約數的算法如下:
(1) 將兩數中最大的那個放在m中,小的放在n中。
(2) 求出m被n除后的余數r。
(3) 若余數為0則執行步驟(7);否則執行步驟(4)。
(4) 把除數作為新的被除數;把余數作為新的除數。
(5) 求出新的余數r。
(6) 重復步驟(3)到(5)。
(7) 輸出n,n即為最大公約數。
void main()
{ int r,m,n;
printf(“Enter m,n:”);
scanf(“%d%d”,);
printf(“m=%d n=%d\n”,m,n);
if (m
{r=m;m=n;n=r;}
r=;
while(r!=0)
{m=n,n=r,r=m;}
printf(“H.C.F=%d\n,n);
}
R10. 以下程序可判斷輸入的一個字符是否為小寫字母,如果是,則轉換為對應的大寫字母并輸出;否則,就原樣輸出。請填空。
#include “stdio.h”
void main()
5
{ char k;
printf(“Enter a character here:”); scanf(“%c”,);
if(=’a’ && k <=?z?>)
printf(“%c\n”,k-32);
else
printf(“%c\n”,k);
}
1.程序打印如下形式的圖形
*
* *
* * *
* * * *
main()
{ for(int i=1;i<=4;i++)< p="">
);
);
}
}
2.充下列程序,找出100200之間的全部素數
# include “math.h”
main()
{ int m,k,i,n=0;
for (m=101;m<=200;m=m+2)< p="">
{
k=sqrt(m);
for ( i=2; (6)___ ; i++ )
if ( (7) )
if ( (8)_________ )
{ printf(“%d”,m);
n=n+1; }
6 break;
if (n%10==0) printf(“\n”);
}
printf(“\n”);
}
3.
第三章 數組(正確的填A,錯誤的填B)
程序填空題
F1整型數組求和
int a[10]={0,1,2,3,4,5,6,7,8,9},sum=0,*pa;
pa=a;
for(pa=a;(); ())
sum=sum+*pa;
F2.下面函數的功能是將一個字符串逆序存放,請填空。
#include "stdio.h"
#include “string.h”
void fun(char str[])
{
;
int i,j;
for(i=0,j=strlen(str);i
{
m = str[i];
str[i] =;
str[j-1] = m;
}
printf("%s\n",str);
}
R3. 下程序從終端讀入數據到數組中,統計其中正數的個數,并計算它們之和。
請填空。
m,count; t=0;
);
[i]>0)
7
sum+=; } }
\n",sum,count);
F4. 函數YangHui的功能是把楊輝三角形的數據賦給二維數組的下半三角,形式如下
其構成規律是:
第0列元素和主對角線無素均為1
其余元素為其左上方和正上方元素之和
數據的個數每行遞增1
請將程序補充完整。 #defint N 6
void YangHui(int *[N][N])
i++)
=1; i;j++)
>+x[i-1][j];
F5、以下程序的功能是將字符串s中的數字字符放入d數組中,最后輸出d中的字符串。例如,輸入字符串:abc123edf456gh,執行程序后輸出:123456。 #include “stdio.h”
#include “string.h” main() { char s[80], d[80]; int i,j; gets(s);
for(i=j=0;s[i]!=\0;i++)
8
if(s[i]>=’0’s[i]<=’9’) { d[j]=s[i]; j++; }
d[j]=; puts(d);
}
R6. 將60分以下的所有成績顯示到屏幕上
int score[10]={56,76,65,43,98,67,34,89,90,76},i;
for(i=0;();i++)
if()
printf(“score[%d]=%d\n”,i,score[i]);
F7.在n行n列的矩陣中,每行都有最大的數,本程序求這n個最大數中的最小一個。
#include
#define N 100
int a[N][N]
void main()
{int row,col,max,min,n;
/*輸入合法n(<100),和輸入n*n個整數到數組a的代碼略*/
for(row=0;row
for(max=a[row][0],col=l;col
if(max
if() min=max;
else if (min>max);
}
printf(“the min of max numbers if %d\n”,min);
}
F9求字符串中字符的個數
char *p=”Hello World”;
int num=0,k=0;
while(*(p+k)!=)
{
9
num=;
k++;
}
printf(“num=%d”,num);
N10(4)統計字符串的單詞數量(單詞用空格分隔)
char str[30]={“Welcome my friend!”};
int i,num;
for(i=1;str[i]!=;i++)
{
if(str[i]!=’ ’ && str[i-1]==)
}
printf(“num=%d”,num);
5(2)
6(3)求字符串中字符的個數
char *p=”Hello World”;
int num=0,k=0;
while(*(p+k)!=(○1 ?\0? ))
{
(○2 num++ ;)
(○3k++; )
}
printf(“num=%d”,num);
7(4)統計字符串的單詞數量(單詞用空格分隔)
char str[30]={“Welcome my friend!”};
10 num++;
int i,num;
for(i=1;str[i]!=(○1 ?\0? );i++)
{
if(str[i]!=(○2 ? ?) && str[i-1]==(○3? ?))
}
printf(“num=%d”,num);
折半查找法:設數組長度為n,則將輸入的數m與a[n/2]比較,若ma[n/2],則將a[n/2+1]到a[n]的數繼續折半進行查找。
8. 程序功能:有10個數按升序放在一個數組中,輸入一個數,要求用折半查找該數是數組中的第幾個元素,如果該數不在數組中,打印出“NO”。#include “stdio.h”
void main()
{
int a[10]={12,32,45,62,71,76,80,85,90,95};
int num,bott,top,mid;
scanf("%d",&num);
bott = 0, top = 9;
while(bott小于等于top)
{ mid=(bott+top)/2;
if( num == a[mid])
{printf("%d is the %d number\n",num,mid); break;}
else if( num 小于 a[mid]);
else bott=mid+1; }
if(大于top)
printf("NO\n");}
num++;
11
第四章 函數
程序填空題
F1下列程序的功能是:將一個數字字符串轉換為一個整數。例如,有字符串“-1234567”程序將它轉換為整數-1234567。
#include
#include
long fs(char *p)
{ int i=0.sign=1;
long num=0;
if(p[i]==-)
sign=;
if(p[i]==+||p[i]==-) i=1;
else i=0;
while(p[i]!=\0)
{
=10;
num+=p[i]-48;
i++;
}
num = sign*num;
return(num);
}
void main()
{ char s[9];
long n;
printf("Enter a string:\n");
gets(s);
n=fs(s);
printf("%d\n",n);
}
F2下列給定程序中,函數fun的功能是:用選擇法對數組中的n個元素按從小到大的順序進行排序
#include
#define N 20
void fun(int a[],int n)
{ int i,j,t,p;
for (j=0;j
{p=j;
for (;i
12
if (a[p]>a[i])
;
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{
int a[N]={9,6,8,3,-1},i,m=5;
printf("排序前的數據:");
for (i=0;i
printf("%d",a[i]);printf("\n");
fun(a,m);
printf("排序后的數據:");
for (i=0;i
printf("%d",a[i]);
printf("\n");
}
F3.下列給定程序中,函數fun的功能是:從n個學生的成績中統計出低于平均分的學生人數,此人數由函數值返回,平均分存放在形參aver所指的存儲單元中。例如,若輸入8名學生的成績:
80.5 60 72 90.5 98 51.5 88 64
則低于平均分的學生人數為4(平均分為:75)。
#include
#include
#define N 20
int fun (float *s,int n,float *aver)
{float ave,t=0.0;
int count=0,k,i;
for (k=0;k
;(不可使用復合的賦值運算符)
ave=t/n;
*aver=ave;
for (i=0;i
if (s[i]
;
}
main()
{float s[30],aver;
int m,i;
printf("nPlease enter m:";scanf("%d",&m);
printf("nPlease enter %d mark:n",m);
for (i=0;iprintf("nThe number of students:%dn",fun(s,m,&aver));
13
printf("Ave=%fn",aver);
)
N4.下列程序用遞歸算法實現,輸入任意一個整數,然后按從高到低輸出各個位上的數字。
#include
void main()
{
long int n;
void func(long);
scanf("%ld",&n);
;
}
void func( long m )
{
if(m>=10)
;
printf("%d",m%10);
}
R5下面函數的功能是從鍵盤輸入一組小寫字母,并保存在字符數組str 中。通過fun()函數把字符數組str中ASCII碼為奇數的小寫字母轉換成對應的大寫字母,結果仍保存在原數組中。例如,輸入”abcdefg”,輸出“AbCdEfG”。 vodi fun(char s[])
{
int i;
for(_i = 0; s[i] != \0 ;i++)
{
if(s[i]>=’a’s[i]<=’z’)< p="">
s[i] =s[i] 32;
}
}
F6.以下函數返回數組s中最大元素的下標,數組中元素的個數由t傳入。
Findmax(int s[],int t)
{
int m,n;
for(n=0,m=n;n
if(s[n]>s[m]);
return;
}
F7、下面程序的功能是:主函數調用了sub函數,實現在3行4列的二維數組中,找出每一行上的最小值,請填空。
14
void sub(int b[3][4])
{int i,j,t,min;
for(i=0;i<3;i++)< p="">
{t=0;
for(j=1;j<4;j++)< p="">
if(b[i][j]< b[i][t]>) t=j;
printf(“i=%d,min=%d\n”,i,); } }
main()
{int a[3][4]={1,7,5,4,9,10,8,15,43,24,25,17};
sub(a); }
F8、以下程序中,select函數的功能是:在N行M列的二維數組中,選出一個最大值作為函數值返回,并通過形參傳回此最大值所在的行下標,請填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0; i
for(j=0;j
if(a[i][j]>a[row][colum])
{ row=i; colum=j;
}
*n=;
return ;
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
R9、mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回,請填空。
int mystrlen(char *str)
{ int i;
for(i=0; str[i]\0;i++);
return();
}
F10、下面的程序通過函數average 計算數組中各元素的平均值,請填空。
float average(int *pa,int n)
{ int i;
float avg=0.0;
for(i=0;i
15
avg =+ pa[i];
avg =;
return avg;
}
main( )
{ int i; a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf(“mean=% f \n”,mean);
}
第五章 指針
程序填空題
F1下列程序的功能是:將一個數字字符串轉換為一個整數。例如,有字符串“-1234567”程序將它轉換為正整數1234567。
#include
#include
long fs(char *p)
{ int i=0.sign=1;
long num=0;
if(p[i]==-)
sign=<1>;
if(p[i]==+||p[i]==-) i=1;
else i=0;
while(p[i]!=\0)
{
num*=10;
num+=p[i]-48;
i++;
}
num = sign*num;
return();
}
void main()
{ char s[9];
long n;
printf("Enter a string:\n");
16
gets(s);
n=fs(s);
printf("%d\n",n);
}
F2.列給定程序中,函數fun的功能是:逐個比較a、b兩個字符串對應位置中的字符,把ASCII值大或等于的字符一次存放到c數組中,形成一個新的字符串。例如,若a中的字符串為aBCDeFgH,b中的字符串為:ABcd,則c中的字符串為:aBcdeFgh。
#include
#include
void fun(char *p,char *q,char *c)
{int k=0;
while(*p||*q)
{if (*p小于等于*q)
c[k]=*q;
else c[k]=*p;
if (*p) p=p+k;
if (*q) ;
k++;
}
}
main()
{char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={ };
;
printf("The string a:"); puts(a);
printf("The string b:"); puts (b);
printf("The result:"); puts(c);
}
F3.下列給定程序中,函數fun的功能是:分別統計字符串中大寫字母和小寫字母的個數。例如,給字符串s輸入:AAaaBBb123CCccccd,則應該輸出結果:upper=6,lower=8。
#include
#include
void fun (char *s,int *a, int *b)
{ while(*s)
{ if (*s大于等于A && *s小于等于Z)
(*a)++;
if (*s大于等于a && *s小于等于z)
(*b)++;
;
}
}
main()
{ char s[100];int upper=0,lower=0;
17
printf("nPlease a string:");gets(s);
;
printf("n upper=%d lower=%dn",upper,lower);
}
N4.以下程序的功能是將磁盤文件a.dat中的10個整數讀入并按升序排序。 void sort(int *p,int n)
{
int i,j,t;
for(i=0;i小于n-1;i++)
for(j=i+1;j小于n;j++)
if(p[i] 大于p[j])
{t=p[i];
;p[j]=t;}
}
void main()
{
int a[10],i,j,t;
FILE *fp;
fp=fopen("a.dat","r");
for(i=0;i小于10;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
;
for(i=0;i小于10;i++)
printf("%d",a[i]);
}
R5、設有以下定義和語句:
int a[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
(*p)[2]是(兩個漢字),*(*(p+2)+1)的值是<60>。
F6、下面的程序的功能是:利用指針統計一個字符串中,字母、空格、數字
及其它字符的個數,請填空。
#include
main()
{ int alpha,space,digit,other;
char *p,s[80];
alpha=space=digit=other=0;
printf(“input string:\n”);
18
gets(s);
for(p=s;*p!=’\0’;p++)
if((*p大于等于’a’&&*p小于等于’z’)|| (*p大于等于’A’&&*p小于等于’Z’))alpha++;
else if(*p<==’>)space++;
else if(*p
于’9’)digit++;
else other++;
printf(“alpha:%dspace:%ddigit:%dother:%d\n”,
alpha,space,digit,other);
R7.設有定義:int n,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充完整。
scanf("%d",);
printf("%d\n",);
F8.fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數,再求這N個最大值中的最小的那個數作為函數值返回。請填空。
#include
#define N 100
int fun(int(*a)[N])
{int row,col,max,min;
for(row=0;row小于N;row++)
{for(max=a[row][0],col=1;col小于N;col++)
if(max小于 a[row][col]);
if(row==0) min=max;
else if(min大于max) min=max;
}
return;
}
F9.函數sstrcmp()的功能是對兩個字符串進行比較。當s 所指字符串和t所指字符相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數strcmp())。請填空。
#include
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==)
{s++;t++; }
return ;;
}
F10、下面的程序是將無符號型的十六進制數構成的字符串轉換為十進制整數, 19 大于等于’0’*p小于等
請填空。
main()
{char *t,a[5];
int m;
gets(a);
t=a;
m=*t-0;
while(!=\0) m=m*16+-’\0’;
printf(“%d\n”,m); }
第六章 預編譯、結構體與共用體
程序填空題
R1.設有以下結構類型說明和變量定義,則變量a在內存所占字節數是<22>(TC環境),表示結構體a變量的成員num數組的元素num[2]。
struct stud
{char num[6];
int s[4];
double ave;
}a;
F2 以下程序的功能是利用結構體變量求解兩個復數之積(3+4i)×(5+6i),請將程序補充完整。
#include "stdio.h"
struct complx
{int real;
int im;
};
struct complx cmult (struct complx za,struct complx zb)
{struct complx w;
w.real = za.real * zb.real - za.im * zb.im;
w.im = za.real * zb.im + za.im * zb.real;
return;
}
void cpr (struct complx za,struct complx zb, struct complx z)
{printf ("(%d+%di)*(%d+%di)=", za.real, za.im, zb.real, zb.im);
printf ("(%d+%di)\n", z.real, z.im);
20
}
main ( )
{static struct complx za = {3,4};
static struct copmlx zb = {5,6};
struct complx z, x, y;
z=cmult();
cpr (za, zb, z);
}
F3以下程序的輸出結果為“4,2”,請將程序補充完整。
#include
main()
{enum color {Red, White=<3>, Blue, Green=1, Yellow};
enum color p;
=&c1;
c1=Blue; c2=Yellow;
printf("%d,%d\n", *p, c2);
}
F4 以下程序中,main函數調用add函數能求出單向鏈表中所有節點數據域的和并存放在sum中。請將程序補充完整。
#include "stdio.h"
struct link
{int data;
stuct link *next;
};
int add(struct link *head)
{struct link *p;
int s=0;
p=;
while(p)
{s+=;
總結
以上是生活随笔為你收集整理的c语言字符串的题库,C考试系统题库含答案程序题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql 使用【information
- 下一篇: Unity2019新建空项目都报错(有两