1. 输入一个字符串,把其中的字符按逆序输出。
如:输入LIGHT,则输出THGIL。
解题如下:
代码语言:javascript复制#include "stdio.h"
void convert(int n){
char str = getchar();
if(n>=1){
convert(n-1);
};
putchar(str);
}
int main(){
convert(5);
printf("n");
return 0;
}
在XCode里运行结果如下:
2. 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也有可能没有鞍点)。
解题如下:
代码语言:javascript复制#include "stdio.h"
#include "string.h"
int main(){
int list[4][5];
// 输入数据
for(int i=0;i<4;i ){
for(int k=0;k<5;k ){
scanf("%d",&list[i][k]);
};
printf("n");
};
// 鞍点数量
int pointNum=0;
// 得出鞍点
for(int i=0;i<4;i ){
// 每行最大的数
int rowMaxNum = list[i][0];
// 最大数在第几行
int rowIndex = i;
// 最大数在第几列
int columnIndex = 0;
// 求出当前行最大数
for(int k=1;k<5;k ){
int temp = list[i][k];
if(temp>rowMaxNum){
rowMaxNum = temp;
columnIndex = k;
};
};
// 设当前行最大数在列中是最小
int isMinNum = 1;
// 当前行最大数在列中是否最小
for(int j=0;j<4;j ){
if(rowIndex!=j && rowMaxNum>list[j][columnIndex]){
isMinNum=0;
break;
}
};
if(isMinNum==1){
printf("list[%d][%d]=%dn",rowIndex,columnIndex,rowMaxNum);
pointNum ;
}
};
if(pointNum==0){
printf("无鞍点");
}
return 0;
};
在XCode里有鞍点运行结果如下:
在XCode里无鞍点运行结果如下:
3. 写一个函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1, char *p2),设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0,若s1≠s2, 返回它们二者第1个不同字符的ASCII码差值。
如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14。如果s1>s2, 则输出正值,如s1<s2, 则输出负值。
解题如下:
代码语言:javascript复制#include "stdio.h"
#include "string.h"
int strcmp(char *p1,char *p2){
int result = 0;
for(int i=0;i<20;i ){
char a=p1[i];
char b=p2[i];
if(a!=b){
result = a-b;
break;
};
// 均为空格时不比较了
if(a b==0){
break;
};
};
return result;
};
int main(){
char str1[20];
char str2[20];
printf("输入两个字符串:n");
// scanf()无法输入空格
// gets()不安全
fgets(str1, 20, stdin);
fgets(str2, 20, stdin);
int result = strcmp(str1,str2);
printf("%dn",result);
return 0;
}
运行结果1:
运行结果2:
运行结果3:
4. 一个班有n个学生,需要把每个学生的姓名和学号输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料,当输入一个姓名后,程序就查找该班中有无此学生,如果有,则输出他的姓名和学号,如果查不到,则输出“本班无此人”。
解题如下:
代码语言:javascript复制#include "stdio.h"
#include "string.h"
struct Student{
char name[10];
int num;
};
int main(){
int n;
printf("输入本班学生数目:");
scanf("%d",&n);
struct Student students[n];
for(int i=0;i<n;i ){
printf("输入姓名和学号:");
scanf("%s %d",students[i].name,&students[i].num);
};
char findName[10];
int findNum = 0;
printf("请输入要找的学生姓名:");
scanf("%s",findName);
for(int j=0;j<n;j ){
if(strcmp(students[j].name,findName)==0){
printf("%s找到了,学号是%dn",students[j].name,students[j].num);
findNum = students[j].num;
break;
};
};
if(findNum==0){
printf("本班无此人n");
};
return 0;
};
运行结果: