c语言常考编程题(c语言期末考试常见编程题)
C语言编程题目?
下面是一个可以利用指针将两个字符串连接起来的 C 语言程序。该程序定义了一个子函数 `StrCat`,用于将两个字符串连接起来,并返回连接后的结果。主函数中,我们先从标准输入读入两个字符串,然后根据它们的长度调用 `StrCat` 函数,将它们连接起来并输出结果。
```c
#include stdio.h
#include string.h
#define MAX_LEN 100
char* StrCat(char* s, char* t);
int main() {
char s1[MAX_LEN], s2[MAX_LEN];
// 从标准输入读入两个字符串
printf("请输入第一个字符串:");
fgets(s1, MAX_LEN, stdin);
printf("请输入第二个字符串:");
fgets(s2, MAX_LEN, stdin);
// 将短的字符串放在前面,然后连接两个字符串
if (strlen(s1) strlen(s2)) {
char *t = s1;
s1 = s2;
s2 = t;
}
StrCat(s1, s2);
// 输出结果
printf("连接后的字符串为:%s", s1);
return 0;
}
char* StrCat(char* s, char* t) {
int i, j;
// 找到 s 末尾位置
for (i = 0; s[i] != '\0'; i++);
// 将 t 中的字符复制到 s 的末尾
for (j = 0; t[j] != '\0'; j++) {
s[i + j] = t[j];
}
s[i + j] = '\0';
return s;
}
```
在这个程序中,我们首先定义了子函数 `StrCat`,该函数接受两个指向字符数组的指针 `s` 和 `t`,将 `t` 中的字符连接到 `s` 的末尾,并返回连接后的结果。具体来说,我们首先找到 `s` 的末尾位置,然后使用循环遍历 `t` 中的每个字符,并将它们复制到 `s` 的末尾。
在主函数中,我们先从标准输入读入两个字符串,并使用 `strlen` 函数获取它们的长度。然后,我们判断哪个字符串比较短,将其放在前面,并调用 `StrCat` 函数将两个字符串连接起来。最后,我们使用 `printf` 函数输出连接后的字符串。
需要注意的是,在函数 `StrCat` 中,我们没有对输入数据进行任何检查(例如,字符串的长度是否超过了数组的大小等)。如果需要确保输入数据的有效性,可以在程序中添加相应的检查代码。
c语言编程题目求解
题目1:
使用if多分支结构:
c
#includestdio.h
int main()
{
int score;
printf("请输入学生的成绩:\n");
scanf("%d", score);
if(score=90 score=99){
printf("学生的成绩等级为A\n");
}else if(score=80 score=89){
printf("学生的成绩等级为B\n");
}else if(score=70 score=79){
printf("学生的成绩等级为C\n");
}else if(score=60 score=69){
printf("学生的成绩等级为D\n");
}else if(score=0 score=59){
printf("学生的成绩等级为E\n");
}else{
printf("输入的成绩不合法\n");
}
return 0;
}
使用switch多分支结构:
c
#includestdio.h
int main()
{
int score;
printf("请输入学生的成绩:\n");
scanf("%d", score);
switch(score/10){
case 10:
case 9:
printf("学生的成绩等级为A\n");
break;
case 8:
printf("学生的成绩等级为B\n");
break;
case 7:
printf("学生的成绩等级为C\n");
break;
case 6:
printf("学生的成绩等级为D\n");
break;
default:
if(score=0 score=59){
printf("学生的成绩等级为E\n");
}else{
printf("输入的成绩不合法\n");
}
break;
}
return 0;
}
题目2:
c
#includestdio.h
#includemath.h
int is_prime(int num)
{
int i;
for(i=2; i=sqrt(num); i++){
if(num%i == 0){
return 0;
}
}
return 1;
}
int main()
{
int num;
printf("请输入一个整数:\n");
scanf("%d", num);
if(is_prime(num)){
printf("%d是素数\n", num);
}else{
printf("%d不是素数\n", num);
}
return 0;
}
题目3:
c
#includestdio.h
#define N 5
int main()
{
int arr[N];
int i, temp;
printf("请输入%d个数:\n", N);
for(i=0; iN; i++){
scanf("%d", arr[i]);
}
for(i=0; iN/2; i++){
temp = arr[i];
arr[i] = arr[N-1-i];
arr[N-1-i] = temp;
}
printf("逆序输出数组:");
for(i=0; iN; i++){
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
C语言的编程题(急)
#include stdio.h
#include malloc.h
int main()
{
? ? int *a,(*b)[2],n,k,i,j;
? ? scanf("%d",n);
? ? a=(int*)malloc(sizeof(int)*n);
? ? for(i=0;in;++i)
? ? ? ? scanf("%d",a[i]);
? ? scanf("%d",k);
? ? b=(int(*)[2])malloc(sizeof(int)*k*2);
? ? for(i=0;ik;++i)
? ? ? ? scanf("%d%d",b[i][0],b[i][1]);
? ? for(i=0;in;++i)
? ? ? ? for(j=0;jk;++j)
? ? ? ? ? ? if(a[i]=b[j][0]a[i]=b[j][1])
? ? ? ? ? ? ? ? a[i]=0;
? ? for(i=0;in;++i)
? ? ? ? if(a[i]0)
? ? ? ? ? ? printf("%d ",a[i]);
? ? free(a);
? ? free(b);
? ? return 0;
}