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 是素数。
c语言程序设计考试题答案及解析
c语言程序设计考试题答案及解析一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. variable-2D. variable$2答案:B解析:在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头,也不能包含特殊字符如$、-等。
2. C语言中,哪个关键字用于声明一个整型变量?A. intB. floatC. doubleD. char答案:A解析:int是用于声明整型变量的关键字,float用于声明浮点型变量,double用于声明双精度浮点型变量,char用于声明字符型变量。
3. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. ||D. &答案:A解析:&&是逻辑与运算符,||是逻辑或运算符,&是按位与运算符,而|是按位或运算符。
4. C语言中,哪个函数用于计算两个整数的和?A. max()B. min()C. sum()D. pow()答案:C解析:sum()函数通常用于计算两个整数的和,而max()和min()函数分别用于找出两个数中的最大值和最小值,pow()函数用于计算幂。
5. 在C语言中,哪个关键字用于循环结构?A. ifB. whileC. forD. switch答案:B、C解析:while和for都是C语言中的循环结构关键字,if用于条件判断,switch用于多条件分支选择。
6. C语言中,哪个函数用于输出字符串?A. printf()B. scanf()C. gets()D. puts()答案:D解析:puts()函数用于输出字符串,printf()用于格式化输出,scanf()用于输入,gets()函数已不推荐使用,因为它可能导致缓冲区溢出。
7. 下列哪个选项是C语言中的数组声明?A. int a[10];B. int a[];C. int a;D. int a=10;答案:A解析:int a[10];是声明一个有10个元素的整型数组的正确方式,B 选项没有指定数组大小,C选项声明了一个整型变量,D选项是对整型变量进行赋值。
c语言课后答案 (2)
第7章数组习题解答一、在以下每一题的四个选项中,请选择一个正确的答案。
【题7.1】C【题7.2】D【题7.3】D【题7.4】D【题7.5】C【题7.6】C【题7.7】C【题7.8】C【题7.9】B【题7.10】B二、判断下列各叙述的正确性,若正确在()内标记√,若错误在()内标记×。
【题7.11】√【题7.12】√【题7.13】×【题7.14】×【题7.15】√【题7.16】×【题7.17】×【题7.18】×【题7.19】√【题7.20】×三、填空。
请在下面各叙述的空白处填入合适的内容。
【题7.21】字符数组【题7.22】0【题7.23】4【题7.24】按行的顺序存放【题7.25】48【题7.26】strcat( )【题7.27】6【题7.28】10【题7.29】strcmp( )C语言程序设计教程实验指导与习题解答【题7.30】#include <stdio.h>四、阅读下面的程序,写出程序运行结果。
【题7.31】abcdefgabcdefabcdeabcdabcaba【题7.32】1 11 2 11 2 3 11 2 3 4 1【题7.33】a[2]*b[1]=2a[4]*b[4]=16a[6]*b[7]=42【题7.34】10 1 2 3 4 5 6 7 8 9五、程序填空。
请在下面程序空白处填入合适的语句。
【题7.35】a[j++]=a[i]【题7.36】array[i]>array[j]六、编程。
对下面的问题编写程序并上机验证。
【题7.37】编写程序,用冒泡法对20个整数排序(按升序排序)。
/*lx7_1.c*/#include "stdio.h"#define N 20void main( ){ int data[N];int i,j,t;printf("请输入%d 个整数:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);printf("\n");for(i=0;i<N; i++)for(j=0; j<N-i; j++)if(data[i]>data[j]){ t=data[i]; data[i]=data[j]; data[j]=t; }第一部分习题解答printf("排序后的输出为:\n");for(i=0;i<N; i++)printf("%d ",data[i]);}【题7.38】编写程序,将一个数插入到有序的数列中去,插入后的数列仍然有序。
c++字符串匹配程序设计题
c++字符串匹配程序设计题给定两个字符串 s 和 t,判断 t 是否是 s 的子串。
如果是,返回 t 在 s 中第一次出现的位置(从 0 开始计数);如果不是,返回 -1。
示例:输入:s = "hello world", t = "world"输出:6解释:t 是 s 的子串,第一次出现的位置是 6。
输入:s = "hello", t = "hi"输出:-1解释:t 不是 s 的子串。
提示:0 <= s.length, t.length <= 10^5s 和 t 由 ASCII 字符组成参考代码:C:#include <iostream>#include <string>using namespace std;int strStr(string s, string t) {int s_len = s.length();int t_len = t.length();for (int i = 0; i <= s_len - t_len; i++) { int j;for (j = 0; j < t_len; j++) {if (s[i+j] != t[j]) {break;}}if (j == t_len) { // t 是 s 的子串,返回第一次出现的位置return i;}}return -1; // t 不是 s 的子串,返回 -1}int main() {string s = "hello world";string t = "world";int pos = strStr(s, t);cout << pos << endl; // 输出 6 return 0;}。
c程序设计考试题目及答案
c程序设计考试题目及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. structB. intC. voidD. return答案:C2. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A3. 若有定义`int a = 5;`,则执行`a += 3;`后,变量a的值是多少?A. 3B. 5C. 8D. 无法确定答案:C4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. $variableD. variable!答案:B5. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World'D. 'Hello, World'答案:A6. C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][];B. int array[][3];C. int array[3][3];D. int array[][];答案:C7. 在C语言中,以下哪个选项是正确的条件语句?A. if (x > y)B. if x > yC. if (x > y) elseD. if (x > y) else if答案:A8. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for i = 0; i < 10; i++C. for (int i = 0; i < 10;)D. for (i = 0; i < 10; i++)答案:A9. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int, int);B. int add(int a, int b)C. int add(int, int) {}D. int add(a, b)答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr[10];D. int ptr(int);答案:A二、填空题(每题2分,共20分)1. 在C语言中,`printf`函数用于__输出__。
c 程序设计语言习题答案
c 程序设计语言习题答案C程序设计语言习题答案C程序设计语言是一门广泛应用于计算机科学和软件工程领域的编程语言。
它的设计目标是提供一种高效、灵活和可移植的方式来编写系统软件和应用程序。
在学习C语言的过程中,习题是帮助我们巩固知识和提高编程能力的重要方式。
下面给出一些常见的C程序设计语言习题的答案,供大家参考。
1. 编写一个程序,计算并输出两个整数的和。
```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;}```2. 编写一个程序,判断一个整数是否为偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数。
\n", num);} else {printf("%d不是偶数。
\n", num);}return 0;}```3. 编写一个程序,计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i += 2) {sum += i;}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```4. 编写一个程序,判断一个年份是否为闰年。
《C语言程序设计》复习 参考答案
第一章【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。
答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。
3.标识符是用来标识程序中的某个对象名字的字符序列。
C语言把标识符分为三类,即关键字、预定义标识符、用户自定义标识符。
对于用户自定义标识符的命名C语言规定:(1)所有的用户标识符必须先定义后使用;(2)用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线“_”组成,并且首字符不能是数字;(3)区分大小写;(4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义标识符。
4.理论上讲,程序开发过程分为四个步骤,分别为:(1)编辑源程序(2)编译源程序,生成目标程序(3)连接目标程序及其相关模块,生成可执行文件(4)运行可执行文件一.单元练习一.选择题1.构成C语言程序的基本单位是()。
A.框架B.预处理C.函数D.语句2.在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()。
A.编辑B.编译C.连接D.运行3.关于主函数,下列说法不正确的是()。
A.一个完整的C语言应用程序有唯一的主函数B.主函数的名称只能是mainC.主函数可以被其他自定义函数调用D.C语言程序的运行从主函数开始,以主函数为核心展开4.关于标识符,下列说法不正确的是()。
C语言试题(答案带解析)
C语言试题(答案带解析)题目:编写一个C语言程序,实现以下功能:1. 输入一个字符串,长度不超过100个字符。
2. 统计并输出字符串中字母、数字、空格和其他字符的数量。
3. 删除字符串中所有的空格,并输出处理后的字符串。
4. 查找字符串中第一次出现字母 'a' 的位置,并输出位置(位置从0开始计算)。
5. 检查字符串是否为回文(忽略大小写和空格),如果是,输出"Yes",否则输出"No"。
试题代码如下:```c#include <stdio.h>#include <string.h>#include <ctype.h>int main() {char str[101];int alpha_count = 0, digit_count = 0,space_count = 0, other_count = 0;int i, a_position = -1;int len, is_palindrome = 1;// 输入字符串printf("Enter a string (up to 100 characters): ");fgets(str, 101, stdin);// 删除换行符len = strlen(str);if (str[len - 1] == '\n') {str[len - 1] = '\0';len--;}// 统计字符数量for (i = 0; i < len; i++) {if (isalpha(str[i])) {alpha_count++;if (str[i] == 'a') {a_position = i;}} else if (isdigit(str[i])) {digit_count++;} else if (isspace(str[i])) {space_count++;} else {other_count++;}}// 输出字符数量printf("Letters: %d\n", alpha_count); printf("Digits: %d\n", digit_count); printf("Spaces: %d\n", space_count); printf("Others: %d\n", other_count); // 删除空格并输出处理后的字符串char new_str[101];int j = 0;for (i = 0; i < len; i++) {if (!isspace(str[i])) {new_str[j++] = str[i];}}new_str[j] = '\0';printf("String without spaces: %s\n", new_str);// 查找字母 'a' 的位置if (a_position != -1) {printf("First occurrence of 'a' is at position: %d\n", a_position);} else {printf("'a' not found in the string.\n");}// 检查字符串是否为回文int start = 0, end = j - 1;while (start < end) {if (tolower(new_str[start]) !=tolower(new_str[end])) {is_palindrome = 0;break;}start++;end--;}if (is_palindrome) {printf("Yes\n");} else {printf("No\n");}return 0;}```解析:1. 程序首先通过 `fgets` 函数读取用户输入的字符串,并检查是否有多余的换行符。
c程序考试题及答案
c程序考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 若有定义`int a[5] = {1, 2, 3, 4, 5};`,则`a[0]`的值是多少?A. 0B. 1C. 2D. 5答案:B3. 在C语言中,以下哪个运算符用于计算两个整数的差?A. %B. /C. -D. *答案:C4. 下列哪个函数用于在C语言中计算字符串的长度?A. strcpyB. strcatC. strlenD. strcmp答案:C5. 若`x`和`y`都是整型变量,以下哪个表达式的结果是非零值?A. x % yB. x / yC. x + yD. x - y答案:A6. C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strncpyC. strcatD. strcmp答案:A7. 下列哪个选项是C语言中的正确注释?A. //B. /* */C. ///D. /*/*/答案:B8. 在C语言中,以下哪个关键字用于声明一个函数?A. defineB. includeC. functionD. void答案:D9. 若`int a = 10;`,则`sizeof(a)`的值是多少?A. 1B. 2C. 4D. 8答案:C10. 在C语言中,哪个函数用于将浮点数转换为字符串?A. atofB. atoiC. itoaD. sprintf答案:D二、填空题(每题2分,共20分)1. C语言中,`printf`函数用于输出格式化的______。
答案:数据2. 若`int a = 5;`,则表达式`a++`的结果是______。
答案:53. C语言中,`while`循环的一般形式是:`while (条件表达式) {______}`。
答案:循环体4. 在C语言中,`break`语句用于______循环。
c语言第八章字符串编程答案
c语言第八章字符串编程答案字符转换描述提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。
输入一个以回车符为结束标志的字符串(少于80个字符)。
输出把字符串中的所有数字字符(‘0’...‘9’)转换为一个整数并输出。
#includeint main(){char str[80];int i;gets(str);for(i=0; str[i]!='\0'; i++){if(str[i]<='9'&&str[i]>='0') printf("%c",str[i]);}printf("\n");}合并字符串输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
输入:两个已经排好顺序(升序)的两个字符串输出:一个合并在一起的有序(升序)的字符串要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
#includeint main(){char str1[80],str2[80],t;int i,n,j;gets(str1);gets(str2);strcat(str1,str2);n=strlen(str1);for(j=1; j<=n; j++)for(i=0; iif(str1[i]>=str1[i+1]){t=str1[i];str1[i]=str1[i+1];str1[i+1]=t;}puts(str1);}删除重复字符输入一个长度不超过 100 的字符串,删除串中的重复字符。
输入:输入要检查的字符串,长度不超过100个字符。
例如:abacaeedabcdcd。
输出:删除重复字符后的字符串。
例如:abced。
#include#includeint main(){char str[100];int i,j;gets(str);for(i=0; str[i]!=0; i++)for(j=0; str[j]!=0; j++)if(str[j]==str[i]&&i!=j) str[j]='\t';for(i=0; str[i]!=0; i++)if(str[i]!='\t') printf("%c",str[i]);printf("\n");}删除指定字符输入两个字符串 s1 和 s2 ,在 s1 中删除任何 s2 中有的字符。
c考试题及答案
c考试题及答案1. 选择题1.1. 以下哪个选项是C语言中的关键字?A. intB. IntegerC. INTD. integer答案:A. int1.2. 在C语言中,以下哪个运算符用于比较两个值是否不相等?A. ==B. !=C. =D. <=答案:B. !=1.3. 下列哪个函数用于计算两个数的和?A. max()B. min()C. sum()D. add()答案:D. add()1.4. 在C语言中,以下哪个选项是正确的字符串声明方式?A. char str[];B. string str;C. char str[10] = "Hello";D. string str = "Hello";答案:C. char str[10] = "Hello";2. 填空题2.1. 在C语言中,定义一个整型变量并初始化为10,可以使用语句:________。
答案:int a = 10;2.2. 如果要交换两个变量的值,可以使用以下语句:temp = a; a = b; b = ________。
答案:temp;2.3. 在C语言中,使用________函数可以输出格式化的字符串。
答案:printf;2.4. 要定义一个指向整型数据的指针,可以使用语句:________。
答案:int *ptr;3. 判断题3.1. C语言中的数组下标是从0开始的。
()答案:正确。
3.2. 函数可以返回多个值。
()答案:错误。
3.3. 在C语言中,使用“&”运算符可以取变量的地址。
()答案:正确。
3.4. 字符串在C语言中是以字符数组的形式存储的。
()答案:正确。
4. 简答题4.1. 请简述C语言中函数的定义和调用过程。
答案:在C语言中,函数定义包括返回类型、函数名、参数列表和函数体。
函数调用则是在需要执行函数功能的地方,通过函数名和必要的参数来调用函数。
- 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、下面程序执行后的输出结果是()。