- 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向
左)读都是一样的整数。
方法:先定义两个字符数组,然后输入元素进第一个,第二个将第一个的反向存储,最后用strcmp函数进行判断。
#include<stdio.h>
void main() {
char a[100]={0},b[100]={0};
int i=0,j=0,n;
scanf("%s",a);
n=strlen(a);
for (i = strlen(a) - 1; i >= 0; i--) {
b[j++] = a[i];
}
if (strcmp(a, b) == 0) {
printf("是回文数\n");
}
else {
printf("不是回文数\n");
}
}
运行结果:
2.给出一个 32 位的有符号整数,你需要将这个整数每位上的数字进行反转。
方法:对于一个有符号的整数进行反转则需要对自己定义的字符数组进行一个是否有负号的判断,再来判断是否要不要保留这个第一项。
为了能够实现将一个数组对半交换,必须得要先输入数字储存进事先定义的数组,再用for循环将该数组定义条件i<n/2,如果i<n则会出现完全逆转。最后再将对半交换的数组输出。
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[32],b[32];
int i,n,t;
printf("请输入您要输入的数");
scanf("%s",a);
n=strlen(a);
if(a[0]=='-'||a[0]=='+'){
for(i=1;i<n;i++){
t=a[i];
b[i]=a[n-i];
a[n-i]=t;
}
}
else {
for(i=0;i<n;i++){
t=a[i];
b[i]=a[n-i-1];
a[n-i-1]=t;
}
}
if(a[0]=='-'||a[0]=='+')
{
printf("%c",a[0]);
for(i=1;i<n;i++){
printf("%c",b[i]);
}}
else{
for(i=0;i<n;i++){
printf("%c",b[i]);}}
return 0;
}
运行结果:
- 给定一个非负整数 numRows,生成杨辉三角的前 numRow 行。
首先我们依旧用数组的定义,循环来做。这次要注意的是每一行第一项都事先需要进行定义a[200][200]={1},如果没有定义就不能使用杨辉三角的公式第n列第i项=第n-1列第i项+第n-1列第i-1项。其次要注意的是我们需要让用户进行的是正整数的输入,如果输入的是非正整数的话要告知实现该程序的前提是输入正整数。而且特别是要注意这个是典型的for的双重循环。
代码:
#include<stdio.h>
int main()
{
int i,j,n,a[200][200]={1},k;
printf("请输入你要的行数");
scanf("%d",&n);
if(n<=0||n>200){
printf("请输入正确的数");
}
else
{
for(i=1;i<=n;i++){
for(k=0;k<=n-i;k++)
printf(" ");
printf("[");
for(j=1;j<=i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%d",a[i][j]);
if(j<i){
printf(",");
}
}printf("]\n");
}
}
return 0;
}
运行结果: