C程序设计(字符串查找与匹配)习题与答案 (2)
c语言学习知识程序设计试题规范标准答案

习题77.1选择题。
(1)下列对字符串的定义中,错误的是: A 。
A) char str[7] = "FORTRAN";B) char str[] = "FORTRAN";C) char *str = "FORTRAN";D) char str[] = {'F','O','R','T','R','A','N',0};(2)以下程序段的输出结果是:____D_________char a[] = "ABCDE" ;char *p = NULL;for (p=a; p<a+5; p++){printf("%s\n", p);}A)ABCDE B) A C)E D)ABCDEB D BCDEC C CDED B DEE A E (3)下列程序是对字符串的相关操作,正确的是____D____。
A)#include <stdio.h>main(){static char a[5];a = "abcde" ;printf("%s\n", a);}B)#include <stdio.h>main(){static char a[7]= "goodbye!";printf("%s\n", a) ;}C)#include <stdio.h>main(){char a[5] = "abcde";printf("%s\n", a) ;}D)#include <stdio.h>main(){static char a[]="abcde";printf("%s\n", a) ;(4)阅读下列函数,函数功能为___A_____。
C程序设计复习题(二)

C程序设计复习题(二)C程序设计复习题(二)一、选择1、下面程序的运行结果是______#include#includemain(){ char a[80]=”AB”,b[80]=”LMNP”;int i=0;strcat(a,b);while(a[i++]!=’\0’) b[i]=a[i];puts(b);}A)LB B)ABLMNP C)AB D)LBLMNP2、下面程序的功能是将字符串s中所有的字符c删除。
请选择填空。
#includemain(){ char s[80];int I,j;gets(s);for(i=j=0; s[i]!=’\0’;I++)if(s[i]!=’c’)_________;s[j]=’\0’;puts(s);}A) s[j++]=s[i]; B)s[++j]=s[i]; Cs[j]=s[i];j++; D) s[j]=s[i];3、有下面的程序段:char a[3],b[]=”China”;a=b;printf(“%s”,a);则_______________。
A)运行后将输出China B)运行后将输出ChC)运行后将输出Chi D)编译出错4、下面程序段的运行结果是_______char a[7]=”abcdef”;char b[14]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A)<空格> B)\0 C)e D)f5、以下正确的说法是______在C语言中:A) 实参和与其对应的形参各占用独立的存储单元;B) 实参和与其对应的形参共占用一个存储单元;C) 只有当实参和与其对应的形参同名时才共同占用存储单元;D) 形参是虚拟的,不占用存储单元。
6、以下程序的运行结果是______fun(int x){ if(x/2>0) fun(x/2-2);printf(“%d”,x);}main(){ fun(20);printf(“\n”);}A)20 8 2 -1 B)2 8 20 C)8 D)-1 2 8 207、以下正确的说法是________如果在一个函数的复合语句中定义了一个变量,则该变量______A) 只在该复合语句中有效B) 在本程序范围内均有效C)在该函数中有效D) 为非法变量8、若使用一维数组名作为函数实参,则以下正确的说法是______A)必须在主调函数中说明此数组的大小B)实参数组类型与形参数组类型可以不匹配C)在被调函数中,不需要考虑形参数组的大小D)实参数组与形参数组名必须一致9、若有定义:int a[4][6];则能正确表示a数组中任一元素a[i][j](此处0≤i<4, 0≤j<6)地址的表达式是________。
c语言字符串编程练习题

int rank[maxnFra bibliotek,height[maxn];
void getheight() {
int i, j, k = 0; for (i=1; i<=N; i++) rank[sa[i]] = i; for (i=0; i<N; i++){ if (k) k--; int j = sa[rank[i]-1]; while (s[i+k] == s[j+k]) k++; height[rank[i]] = k; } }
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#include <cstring> #include <functional> #include <bitset> #pragma comment(linker, "/STACK:266777216") using namespace std; #define pb push_back #define ppb pop_back #define pi 3.1415926535897932384626433832795028841971 #define mp make_pair #define x first #define y second #define pii pair<int,int> #define pdd pair<double,double> #define INF 1000000000 #define FOR(i,a,b) for (int _n(b), i(a); i <= _n; i++) #define FORD(i,a,b) for(int i=(a),_b=(b);i>=_b;i--) #define all(c) (c).begin(), (c).end() #define SORT(c) sort(all(c)) #define rep(i,n) FOR(i,1,(n)) #define rept(i,n) FOR(i,0,(n)-1) #define L(s) (int)((s).size()) #define C(a) memset((a),0,sizeof(a)) #define VI vector <int> #define ll long long const int di[] = { 0, 1, 0, -1 }; const int dj[] = { 1, 0, -1, 0 }; int a, b, c, d, n, m, k; char mas[2002][2002]; int cs[2002][2002], cs2[4][2002][2002]; int hor[2002][2002], ver[2002][2002]; bool used[2002][2002]; pii sof[4]; pii q[4000002]; void bfs(int bi, int bj)
C语言程序设计练习题(答案)

C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
c程序设计语言习题答案

c程序设计语言习题答案C语言是一种广泛使用的计算机编程语言,它具有高效、灵活和可移植的特点。
学习C语言不仅能够帮助你理解计算机编程的基本原理,而且对于掌握其他编程语言也大有裨益。
以下是一些C语言程序设计语言习题的答案示例,供你参考。
习题一:编写一个C程序,计算并输出两个整数的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum);return 0;}```习题二:编写一个C程序,实现一个简单的猜数字游戏。
```c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(NULL));secretNumber = rand() % 100 + 1; // 生成1到100之间的随机数printf("猜一个1到100之间的数字。
\n");do {printf("请输入你的猜测:");scanf("%d", &guess);attempts++;if (guess < secretNumber) {printf("太低了!\n");} else if (guess > secretNumber) {printf("太高了!\n");} else {printf("恭喜你,猜对了!\n");break;}} while (guess != secretNumber);printf("你总共尝试了%d次。
《C语言》程序设计题库及答案

《C语言》程序设计题及答案1.【程序设计】--------------------------------------------------功能:对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如:原来的字符串为CEAedca,排序后输出为CedcEAa。
------------------------------------------------*/{/**********Begin**********/int i,j;char t;for(i=1;i<num-1;i++)for(j=i+1;j<num-1;j++)if(s[i]<s[j]){ t=s[i];s[i]=s[j];s[j]=t;}/********** End **********/2.【程序设计】--------------------------------------------------功能:编写函数求3!+6!+9!+12!+15+18!+21!。
------------------------------------------------*/{/**********Begin**********/int i,j;float t,s=0;for(i=3;i<=n;i=i+3){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}return(s);/********** End **********/3./*------------------------------------------------ 【程序设计】-------------------------------------------------- 功能:判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。
------------------------------------------------*/ /**********Begin**********/int k,s=0;do{s=s+(w%10)*(w%10);w=w/10;}while(w!=0);if(s%5==0)k=1;else k=0;return(k);4./*------------------------------------------------ 【程序设计】-------------------------------------------------- 功能:求给定正整数n以内的素数之积。
C字符数组练习题及解答

字符数组第1题:编写程序,比较两个字符串的大小,不允许使用strcmp函数。
输入分2行,每一行均为字符串(不包含空格)。
如果第一个字符串大于第二个字符串,则输出1;如果两个字符串大小相等,则输出0;如果第一个字符串小于第二个字符串,则输出-1。
样例输入:ChinaChina样例输出:0#include<iostream.h> int main(){char a[100],b[100];int t=0,i;cin>>a;cin>>b;for(i=0;a[i]!=0||b[i]!=0;i++){if(a[i]>b[i]){t=1;break;}if(a[i]<b[i]){t=-1;break;}}cout<<t;return 0;}第2题:编写程序,将一个字符串首尾互换,并与原字符串连接后输出。
输入字符串(不包含空格),输出处理后的结果。
样例输入:china样例输出:chinaanihc#include<iostream.h> #include<string.h> int main(){char str1[100],i;int n; cin>>str1;n=strlen(str1);for(i=0;i<n;i++){str1[n+i]=str1[n-i-1];}for(i=0;i<n*2;i++)cout<<str1[i];return 0;}第3题:编写程序,输入由数字字符构成的字符串,分别统计该字符串中数字字符对应的数字中奇数和偶数的个数。
样例输入:7843028503样例输出:4 6#include <string.h>#include <iostream.h> int main(){int a[100],i,n,o,j;char str[100];o=0;j=0;cin>>str;n=strlen(str);for(i=0;i<n;i++){a[i]=str[i];}for(i=0;i<n;i++){a[i]=a[i]-48;if(a[i]%2==0){o=o+1;}else{j=j+1;}}cout<<j<<" "<<o;return 0;字符数组}第4题:编写程序,输入字符串(不包含空格),删除字符串中ASCII码值能被3整除的字符,将剩余字符按从小到大排序后输出。
c程序设计题库及详解答案

c程序设计题库及详解答案在C语言的学习过程中,掌握各类编程题目并理解其解答是至关重要的。
以下是一些常见的C程序设计题库及对应的详解答案。
1. 求两个数的最大公约数使用辗转相除法(欧几里得算法)可以求得两个数的最大公约数。
以下是求解的C程序代码:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数是:%d\n", gcd(num1, num2));return 0;}```2. 计算一个数的阶乘阶乘是一个数与所有小于它的正整数的乘积。
以下是计算阶乘的C 程序代码:```c#include <stdio.h>long long factorial(int n) {if (n == 0)return 1;return n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%lld\n", num, factorial(num)); return 0;}```3. 判断一个数是否为素数素数是指只能被1和其本身整除的大于1的自然数。
以下是判断素数的C程序代码:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1)return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0)return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num))printf("%d 是素数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题1、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
A.p2=c;B.c=*p1+*p2;C.p1=p2;D.c=*p1*(*p2);正确答案:A2、下面判断正确的是()。
A.char *a="china"; 等价于 char *a; *a="china" ;B.char str[10]={"china"}; 等价于 char str[10]; str[]={"china";}C.char c[4]="abc",d[4]="abc"; 等价于 char c[4]=d[4]="abc" ;D.char *s="china"; 等价于 char *s; s="china" ;正确答案:D3、下面能正确给字符串s赋值的是()。
A.char s[6]="ABCDE";B.char s[6] ; s="ABCDE";C.char s[5]={'A','B','C','D','E'} ;D.char *s; scanf("%s",s);正确答案:A4、若有程序段char s[]="china"; char *p ; p=s ;以下叙述中正确的是()。
A.s和p完全相同B.s数组长度和p所指向的字符串长度相等C.*p与s[0]相等D.数组s中的内容和指针变量p中的内容相等正确答案:C5、若有定义char a[]="Itismine", *p="Itismine";以下叙述中错误的是()。
A.a数组所占字节数为9B.p不能再指向别的字符串常量C.p变量中存放的地址值可以改变D.a+1表示的是字符't'的地址正确答案:C6、若有定义char s[6],*ps=s;则正确的赋值语句是()。
A. s="12345";B.*ps="12345";C.ps="12345";D.*s="12345";正确答案:C7、若有定义char *cc[2]={"1234","5678"};以下叙述中正确的是()。
数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址是指针变量,它指向含有两个数组元素的一维字符数组数组的两个元素中各自存放了字符串"1234"和"5678"的首地址数组元素的值分别是"1234"和"5678"正确答案:C8、下面程序段中,for循环的执行次数是()。
char *s="\ta\018bc" ;for ( ; *s!='\0' ; s++) printf("*");A.5B.6C.7D.9正确答案:B9、下面程序段执行后的输出结果是()。
char *s="abcde" ;s+=2;printf("%d",s);A.不确定B.字符'c'C.cdeD.字符'c'的地址正确答案:D10、下面程序段执行后的输出结果是()。
char a[]="language",*p;p=a ;while (*p!='u') { printf("%c",*p-32); p++ ;}ngUAGENGnguageNGUAGE正确答案:B11、下面程序执行后的输出结果是()。
#include <stdio.h>char cchar(char ch){if(ch>='A' && ch<='Z') ch=ch-'A'+'a';return ch;}int main(){ char s[]="ABC+abc=defDEF",*p=s;while(*p) {*p=cchar(*p);p++;}printf("%s",s);return 0;}A.abcaABCDEFdefB.abc+ABC=DEFdefC.abc+abc=defdefD.abcabcdefdef正确答案:C12、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);return 0;}A.3B.编译错误C.5D.a[4]的地址正确答案:C13、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char s[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);return 0;}A./NoYes/NoB./NoYes/NoC./NoYesD.n/NoYes/No正确答案:C14、下面程序执行后的输出结果是()。
#include <stdio.h>int main(){ char str[][10]={"GreatWall","Beijing"},*p=str[0];printf("%s",p+13);return 0;}A.ingB.jingC.BeijingD.GreatWall正确答案:B15、若有定义char *st="how are you";下列程序段中正确的是()。
A.char a[],*p; strcpy(p=&a[1],st+2);B.char a[11],*p; strcpy(p=a+1,&st[4]);C.char a[11]; strcpy(a, st);D.char a[11]; strcpy(++a, st);正确答案:B16、下面程序执行后的输出结果是()。
#include <stdio.h>#include <string.h>int main(){ char str[][20]={"Hello","Beijing"},*p=str[0];printf("%d",strlen(p+20));return 0;}A.0B.5C.7D.20正确答案:C17、若有定义char a[10],*b=a;不能给数组a输入字符串的语句是()。
A.gets(&a[0]);B.gets(a);C.gets(b);D.gets(a[0]);正确答案:D18、下面程序执行后的输出结果是()。
#include <stdio.h>#include <string.h>void fun(char *s,int p,int k){ int i;for(i=p;i<k;i++) *(s+i)=s[i+2];}int main(){char s[]="abcdefg";fun(s,3,strlen(s)); puts(s);return 0;}A.defgB.abcfgC.abcD.abcdefg正确答案:B19、s1和s2已正确定义并分别指向两个字符串。
若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()。
A.if(strcmp(s1,s2)>0) S;B.if(s1>s2) S;C.if(strcmp(s2,s1)>0) S;D.if(strcmp(s1,s2)) S;正确答案:A20、以下与库函数strcpy(char *p1,char *p2)功能不相等的程序段是()。
A.void strcpy2(char *p1,char *p2){ while ((*p1=*p2)!='\0') { p1++; p2++; } }B.void strcpy4(char *p1,char *p2){ while (*p2) *p1++=*p2++ ; }C.void strcpy1(char *p1,char *p2){ while ((*p1++=*p2++)!='\0') ; }D.void strcpy3(char *p1,char *p2){ while (*p1++=*p2++) ; }21、若有定义char s1[]="string1",s2[8],*s3,*s4="string2";则对库函数strcpy错误调用的是()。
A.strcpy(s2,s1);B.strcpy(s3,"string1");C.strcpy(s2,s4);D.strcpy(s1,"string2");正确答案:B22、以下与库函数strcmp(char *s,char *t)功能相等的程序段是()。
A.int strcmp2(char *s,char *t){ for ( ; *s++==*t++; )if (!*s) return 0 ;return (*s-*t) ;}B.int strcmp1(char *s,char *t){ for ( ; *s++==*t++; )if (*s=='\0') return 0 ;return (*s-*t) ;}C.int strcmp3(char *s,char *t){ for ( ; *t==*s; ){ if (!*t) return 0 ; t++ ; s++ ; }return (*s-*t) ;}D.int strcmp4(char *s,char *t){ for ( ; *s==*t;s++,t++ )if (!*s) return 0 ;return (*t-*s) ;}23、下面程序执行后的输出结果是()。