C语言实现回文字符串判断

合集下载

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。

nk=0; mt=0; //用于记录出列顺序while(t<n){if(num[i]==0) k++;if(k==m){t++;num[i]=t;k=0;}i++;if(i==n)i=0; //或者 i=i%n,构成循环}for(i=0;i<n;i++)printf("%4d",i+1);printf("\n");for(i=0;i<n;i++)printf("%4d",num[i]);printf("\n");}4、编程打印直角杨辉三角形前六行。

#include <>#include <>void main(){int i,j,a[6][6];for(i=0;i<=5;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<=5;i++){for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(i=0;i<=5;i++){for(j=0;j<=i;j++){printf("%4d",a[i][j]);}printf("\n");}}5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 1312 26 88 9375 18 22 3256 44 36 58然后执行以下操作:①输出矩阵两个对角线上的数;②分别输出各行和各列的和;③交换第一行和第三行的位置;④交换第二列和第四列的位置;⑤输出处理后的数组。

#include<>#define SIZE 4void main(){inta[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}};int i,j,t,sum;//输出二维数组printf("二维数组:\n");for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");printf("主对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][i]);}printf("\n");printf("副对角线上的数:");for(i=0;i<SIZE;i++){printf("%4d",a[i][SIZE-1-i]);}printf("\n\n");//各列的和for(i=0;i<SIZE;i++){sum=0;for(j=0;j<SIZE;j++){sum+=a[i][j];}printf("第%d行的和=%d\n",i+1,sum);}printf("\n");//各列的和for(j=0;j<SIZE;j++){sum=0;for(i=0;i<SIZE;i++){sum+=a[i][j];}printf("第%d列的和=%d\n",j+1,sum);}printf("\n");//交换第一行和第三行的位置for(j=0;j<SIZE;j++){t=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}//输出二维数组printf("交换第一行和第三行后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}printf("\n");//交换第二列和第四列的位置for(i=0;i<SIZE;i++){t=a[i][1];a[i][1]=a[i][3];a[i][3]=t;}//输出二维数组printf("交换第2列和第4列后的二维数组:\n"); for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){printf("%5d",a[i][j]);}printf("\n");}} 6、求一个5×5矩阵中的马鞍数,输出它的位置,所谓马鞍数是指在行上最小而在列上最大的数。

c语言练习题目

c语言练习题目

1.熟悉却又不一样的回文字符串还记得回文字符串吗,现在又有差不多的东西来了,有一种对大小写不敏感的回文字符串,比如AbCdDcBa,就是这种对大小写不敏感的回文字符串。

那么现在请你编写程序,判断某一字符串是否就是这种不敏感的字符串。

【输入格式】共一行,一个字符串。

【输出格式】如果是不敏感字符串,那就是yes,如果不是,那就是no。

【样例输入】AbCdDcBa【样例输出】yes【样例输入】Abcd【样例输出】no2.熟悉却又不一样的快速排序明明继随机数后又遇到了一些问题,现在,他要将这些随机数筛掉重复数字之外,还要筛选掉所有素数(质数),然后再对他们进行排序,并利用快速排序算法将这些数从大到小排序后输出。

【输入格式】共两行,第一行,一个数字n(n<=100),表示输入n个数。

第二行,n个数字,表示随机数。

【输出格式】共一行,筛选排序完之后的数字。

【样例输入】71 1234 6 8【样例输出】8 6 4 13.熟悉却又不一样的杨辉三角在键盘上输入一个数字n(n<=10),打出金字塔类型的杨辉三角。

【输入格式】一行,一个正整数n(n<=10)。

【输出格式】n行,样式为金字塔式的杨辉三角。

【样例输入】5【样例输出】4.陌生的方阵转换输入一个正整数n,在输入一个n*n(n<=10)的方阵,要求进行转换,将右上半部的数与左下半部的书对换,数与数之间一个空格隔开。

【输入格式】第一行,一个正整数n(n<=10)。

接下来n行,每行都是连续的数字。

【输出格式】n行,转换之后的方阵【样例输入】51 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 25【样例输出】1 6 11 16 212 7 12 17 223 8 13 18 234 9 14 19 245 10 15 20 255.陌生的七位不相等完全平方数1267*1267=1605289;表明等式右边是一个七位的完全平方数,而且他的七位每位都不相等。

华南农业大学c语言上机考试题目

华南农业大学c语言上机考试题目

1打印数字空心菱形Time Limit:1000MS Memory Limit:65536K题型: 编程题语言: 无限制描述由键盘输入n(n为奇数),打印如下图空心菱形例n=712 23 34 43 32 21输入格式整数输出格式如题输入样例3输出样例12 21作者Admin答案:#include <stdio.h>#include <math.h>int main(){int n,i,j;scanf("%d",&n);n/=2;for(i=-n;i<=n;++i){for(j=0;j<2*n+1-abs(i);++j){if(j==abs(i)||j==2*n-abs(i)){printf("%d",n-abs(i)+1);}else{printf("\040");}}printf("\n");}return 0;}2两数和为1909Time Limit:1000MS Memory Limit:65536K题型: 编程题语言: 无限制描述由键盘输入10个整数,编程判断是否存在两个数的和为1909,存在输出Y,不存在输出N输入格式10个整数,由空格分隔输出格式Y或者N输入样例2 1900 42 3123 31 23 343 213 34 9输出样例Y提示作者Admin#include<stdio.h>#include<stdlib.h>main(){int a[10];int i,j;int flag = 0;printf("input ten numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){for(j=0;j<10;j++)if(a[j] + a[i] == 1909 && i!=j){flag = 1;break;}}if(flag) printf("Y\n");else printf("N\n");system("pause");}3回文串的判断Time Limit:1000MS Memory Limit:65536K题型: 编程题语言: 无限制描述回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N输入格式一行字符输出格式Y或N输入样例abca输出样例Y提示提示,去掉c字符,即可成为回文串作者Admin#include "stdio.h"#include "string.h"int main(){int n;char a[100]="abca";int i,j,flag;n=strlen(a);i=0;j=n-1;flag=0; // characters qty need insertedwhile ( (flag<2) // only need 0 or 1 character&& ((i+1)<=(j-1)) // have character to compare){if (a[i]==a[j]) {i++; j--;}else if (a[i]==a[j-1]) {flag++; i++; j-=2;}else if (a[i+1]==a[j]) {flag++; i+=2; j--;}else flag=2;}if (flag<2) printf("Y");else printf("N");return 0;}二:#include<stdio.h>#include<conio.h>#define SIZE 20int isPalindrome(char []); /* Prototype only send the number and type of arguments to the Compiler. */main(){ /*Local Declarations*/char str[SIZE];/*Statements*/printf("请输入字符串,以回车结束:\n");scanf("%s",str); /*Record the string.*/if(isPalindrome(str)==0) /*The string is not a palindrome.*/ { printf("The string is not a palindrome.\n"); }else /*The string is a palindrome.*/{ printf("The string is a palindrome.\n"); }system("pause");return 0;}三:#include<stdio.h>#include<string.h>void main(){char str[20],copy[20];char temp;char *head,*tail;printf("Please input a string:\n");gets(str);strcpy(copy,str);head=str;tail=str+strlen(str)-1;while(head<tail){temp=*head;*head++=*tail;*tail--=temp;}if(strcmp(copy,str)==0)printf("该字符串为回文。

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)下面是20条基础案例:1. 输出Hello, World!#include <stdio.h> // 使用标准输入输出库int main() {printf("Hello, World!\n"); // 输出字符串return 0; // 返回程序执行成功}2. 判断一个数是否为偶数#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数if(num % 2 == 0) { // 如果余数为0说明是偶数printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}3. 计算两个数的和#include <stdio.h> // 使用标准输入输出库int main() {int a, b; // 定义变量int sum; // 定义变量printf("请输入两个整数:");scanf("%d%d", &a, &b); // 从控制台输入两个整数sum = a + b; // 求和printf("%d + %d = %d\n", a, b, sum); // 输出结果return 0;}4. 求一个数的平方#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量int square; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数square = num * num; // 求平方printf("%d 的平方是%d\n", num, square); // 输出结果return 0;}5. 判断一个字符是否为数字#include <stdio.h> // 使用标准输入输出库#include <ctype.h> // 使用字符函数库int main() {char ch; // 定义变量printf("请输入一个字符:");scanf("%c", &ch); // 从控制台输入一个字符if(isdigit(ch)) { // 判断是否为数字printf("%c 是数字\n", ch);} else {printf("%c 不是数字\n", ch);}return 0;}6. 计算数组元素的平均值#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int sum = 0; // 定义变量int avg; // 定义变量for(int i = 0; i < len; i++) { // 遍历数组sum += arr[i]; // 累加求和}avg = sum / len; // 求平均值printf("数组的平均值是%d\n", avg); // 输出结果return 0;}7. 按照下标访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, arr[i]); // 输出每个元素}return 0;}8. 使用指针访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int *p = arr; // 把数组首地址赋给指针变量for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, *(p + i)); // 输出每个元素}return 0;}9. 求Fibonacci 数列的第n 项#include <stdio.h> // 使用标准输入输出库int main() {int n; // 定义变量int a = 0, b = 1, c; // 定义变量printf("请输入一个正整数:");scanf("%d", &n); // 从控制台输入一个整数for(int i = 1; i <= n; i++) { // 求Fibonacci 数列的第n 项c = a + b;a = b;b = c;}printf("Fibonacci 数列的第%d 项是%d\n", n, a); // 输出结果return 0;}10. 使用递归计算阶乘#include <stdio.h> // 使用标准输入输出库int factorial(int n) { // 定义递归函数if(n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n; // 定义变量printf("请输入一个非负整数:");scanf("%d", &n); // 从控制台输入一个整数int result = factorial(n); // 调用递归函数计算阶乘printf("%d 的阶乘是%d\n", n, result); // 输出结果return 0;}11. 判断一个数是否是质数#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if(num <= 1) {return false; // 小于等于1的数都不是质数}for(int i = 2; i * i <= num; i++) { // 只要从2到根号num遍历就可以了if(num % i == 0) {return false; // 如果存在因子,则不是质数}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPrime(num); // 调用isPrime函数if(result) {printf("%d 是质数\n", num);} else {printf("%d 不是质数\n", num);}return 0;}12. 计算圆的面积和周长#include <stdio.h>const double PI = 3.1415926;int main() {double r, area, perimeter;printf("请输入圆的半径:");scanf("%lf", &r);area = PI * r * r; // 计算面积perimeter = 2 * PI * r; // 计算周长printf("圆的面积是%.2f,周长是%.2f\n", area, perimeter);return 0;}13. 计算斐波那契数列的前n 项#include <stdio.h>int main() {int n;printf("请输入要输出的斐波那契数列项数:");scanf("%d", &n);int a = 0, b = 1, c; // 定义三个变量for(int i = 1; i <= n; i++) { // 输出前n项斐波那契数列printf("%d ", a);c = a + b;a = b;b = c;}printf("\n"); // 换行return 0;}14. 嵌套循环输出九九乘法表#include <stdio.h>int main() {for(int i = 1; i <= 9; i++) { // 控制行数for(int j = 1; j <= i; j++) { // 控制列数printf("%d*%d=%-2d ", j, i, i * j); // 左对齐输出}printf("\n"); // 换行}return 0;}15. 获得数组的最大值和最小值#include <stdio.h>int main() {int arr[] = {3, 5, 8, 1, 4, 9, 6, 2, 7};int len = sizeof(arr) / sizeof(int);int max = arr[0], min = arr[0]; // 假设第一个元素既是最大值也是最小值for(int i = 1; i < len; i++) {if(arr[i] > max) { // 更新最大值max = arr[i];}if(arr[i] < min) { // 更新最小值min = arr[i];}}printf("数组的最大值是%d,最小值是%d\n", max, min);return 0;}16. 判断一个数是否为回文数```c#include <stdio.h>#include <stdbool.h>bool isPalindrome(int num) {if(num < 0) { // 负数不是回文数return false;}int temp = num, reversed = 0; // 定义需要用到的变量while(temp != 0) { // 反转整数reversed = reversed * 10 + temp % 10;temp /= 10;}return (num == reversed); // 如果反转后等于原来的数,则为回文数}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPalindrome(num);if(result) {printf("%d 是回文数\n", num);} else {printf("%d 不是回文数\n", num);}return 0;}17. 将字符串反转输出#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = len - 1; i >= 0; i--) { // 倒序输出printf("%c", str[i]);}printf("\n"); // 换行return 0;}18. 将一个二维数组按列排序#include <stdio.h>void sortCols(int arr[][3], int rows) {for(int j = 0; j < 3; j++) { // 按列排序for(int i = 0; i < rows - 1; i++) {for(int k = i + 1; k < rows; k++) {if(arr[i][j] > arr[k][j]) { // 比较大小并交换int temp = arr[i][j];arr[i][j] = arr[k][j];arr[k][j] = temp;}}}}}int main() {int arr[][3] = {{2, 5, 9}, {7, 6, 1}, {4, 3, 8}};int rows = sizeof(arr) / sizeof(arr[0]); // 计算数组的行数sortCols(arr, rows); // 调用函数排序for(int i = 0; i < rows; i++) { // 输出排序后的数组for(int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n"); // 换行}return 0;}19. 判断一个字符串是否为回文串#include <stdio.h>#include <string.h>#include <stdbool.h>bool isPalindrome(char str[]) {int len = strlen(str);for(int i = 0; i < len / 2; i++) { // 判断左右字符是否一样if(str[i] != str[len - i - 1]) {return false;}}return true;}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);bool result = isPalindrome(str); // 调用函数判断是否为回文串if(result) {printf("%s 是回文串\n", str);} else {printf("%s 不是回文串\n", str);}return 0;}20. 将一个整数转换成二进制数并输出#include <stdio.h>void decToBin(int num) {if(num > 1) { // 递归调用decToBin(num / 2);}printf("%d", num % 2); // 每次输出余数}int main() {int num;printf("请输入一个十进制数:");scanf("%d", &num);printf("%d 的二进制数为", num);decToBin(num); // 调用函数输出二进制数printf("\n"); // 换行return 0;}。

c语言bool函数返回值

c语言bool函数返回值

c语言bool函数返回值C语言是一种广泛使用的编程语言之一,其中函数返回值是程序设计中非常重要的一个部分。

bool类型也是C语言中常见的类型之一,在函数返回值中扮演着重要的角色。

在本文中,我们将会探讨函数返回值和bool类型如何在C语言中运作。

1. 函数返回值在C语言中,函数可以通过返回值来传递信息。

当函数被调用时,它会执行一些指令,最后将结果作为返回值传递给调用它的函数。

函数返回值可以是任何数据类型,包括整型、浮点型、字符型等。

返回值的类型需要在函数定义时声明,并且使用return语句来指定。

例如,下面的函数返回两个数的和:int add(int a, int b){return a + b;}在这个例子中,函数add返回了两个整数变量a和b的和。

这个返回值可以被调用它的函数存储并使用它来执行其他计算。

2. bool类型bool是C语言中的一种数据类型,代表了“真”和“假”两个可能的值。

bool类型可以用来表示逻辑条件,当条件为真时值为true,为假时值为false。

bool类型只有两种可能的取值,因此它的大小只有一个比特(bit)。

例如,下面的代码使用bool类型来表示一个变量是否为奇数:bool isOdd(int n){if(n % 2 == 1){return true;} else {return false;}}在这个例子中,函数isOdd接受一个整数变量n,并判断它是否为奇数。

如果是奇数,函数返回true,否则返回false。

3. bool函数返回值在C语言中,函数可以返回bool类型的值。

在这种情况下,函数通常用来测试一个条件并返回结果。

例如,下面的函数检查一个字符串是否是回文:bool isPalindrome(char str[]){int i, j;for(i = 0, j = strlen(str)-1; i < j; i++, j--){if(str[i] != str[j]){return false;}}return true;}在这个例子中,函数isPalindrome接受一个字符串参数str,并检查它是否是回文。

c语言判断回文(递归法,非递归法)

c语言判断回文(递归法,非递归法)
return isPalindrome(i-2);//循环直至判断出该字符串是否为回文数 } else {
return 0; } } int main() { int n; printf("输入一串字符以判断是否为回文。\n"); scanf("%s",&a); n=strlen(a); if(isPalindrome(n)) printf("输入的是回文。\n"); else printf("输入的不是回文。\n"); }
编写程序判断一个字符串是否为回文,要求使用递归方法实现。
代码: #include<stdio.h> #include<string.hindrome(int i) {
int m; m=strlen(a); if(i<=1) return 1; if(a[m-i]==a[i-1]) {
编写程序判断一个字符串是否为回文,要求使用非递归方法实现。
代码: #include<stdio.h> #include<string.h> #include<stdlib.h> void main() {
char ch[100]; //存放键入的字符串 int i,j; printf("输入一串字符以判断是否为回文。\n"); scanf("%s",ch); //接受键入的字符串 i=0; j=strlen(ch)-1; while(i<j) if(ch[i]==ch[j]) {i++; j--; } else break; if(i>=j) printf("输入的是回文。\n"); else printf("输入的不是回文。\n"); }

数据结构(C语言版)严蔚敏课后习题答案

数据结构(C语言版)严蔚敏课后习题答案

数据结构(C语言版)严蔚敏课后习题答案数据结构(C语言版)严蔚敏课后习题答案一、线性表1. 顺序表顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。

C语言中常用数组来实现顺序表。

以下是一些常见题目的解答:题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。

解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], neg[MAX_SIZE];int n, i, j = 0;printf("Enter the number of elements: ");scanf("%d", &n);printf("Enter the elements: ");for (i = 0; i < n; i++) {scanf("%d", &A[i]);if (A[i] < 0) {neg[j] = A[i];j++;}}printf("Negative numbers: ");for (i = 0; i < j; i++) {printf("%d ", neg[i]);}return 0;}```题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。

解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE * 2]; int m, n, i, j, k;printf("Enter the number of elements in the first list: "); scanf("%d", &m);printf("Enter the elements in increasing order: ");for (i = 0; i < m; i++) {scanf("%d", &A[i]);C[i] = A[i];}printf("Enter the number of elements in the second list: "); scanf("%d", &n);printf("Enter the elements in increasing order: ");for (i = 0; i < n; i++) {scanf("%d", &B[i]);C[m + i] = B[i];}// Merge A and B into Ci = j = k = 0;while (i < m && j < n) { if (A[i] < B[j]) {C[k] = A[i];i++;} else {C[k] = B[j];j++;}k++;}while (i < m) {C[k] = A[i];i++;k++;}while (j < n) {C[k] = B[j];j++;k++;}printf("Merged list in increasing order: ");for (i = 0; i < m + n; i++) {printf("%d ", C[i]);}return 0;}```2. 链表链表是一种动态的数据结构,它通过结点之间的指针联系起来。

14级程序设计基础题库(c语言)2016.6.8更新2【精选】

14级程序设计基础题库(c语言)2016.6.8更新2【精选】

六、字符串(10道抽1道,写代码)1、编写程序,用你的英文名字初始化一个字符串,然后输出,如John (较易)#include<stdio.h>#include<string.h>void main(){char name[10]={"john"};puts(name);}2、请定义一个长度为10的字符串,并将其输出显示。

(较易)#include<stdio.h>#include<string.h>void main(){char name[10]={"johnghasd"};puts(name);}3、定义2串密码,判断该两串密码是否一致。

(较难)#include<stdio.h>#include<string.h>void main(){char s1[10]={"johnghasd"};char s2[10]={"gaoshglks"};if(strcmp(s1,s2)==0)printf("一致\n");elseprintf("不一致\n");}4、反向加密:定义任意长度的密码,输出反向的密码。

(较易)5、判断字符串是否为回文串。

(提示:回文字符串是具有回文特性的字符串:即该字符串从左向右读和从右向左读一样,如12321)(难)6、将字符串中的小写字母改为相应的大写字母 。

(难)#include<stdio.h>#include<string.h>void main(){char str[10]={"bcaefd"};int i;for(i=0;str[i]!='\0';i++)if(str[i]>='a'&&str[i]<='z')str[i]-=32;4 11 201628puts(str);}7、定义两个字符串,比较两个字符串的长度,输出较长的字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档