```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 = 0s[i] != '\0'i++)
// 将 t 中的字符复制到 s 的末尾
for (j = 0t[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` 中,我们没有对输入数据进行任何检查(例如,字符串的长度是否超过了数组的大小等)。如果需要确保输入数据的有效性,可以在程序中添加相应的检查代码。
题目1:使用if多分支结构:
c
#include<stdio.h>
int main()
{
int score
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
#include<stdio.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
#include<stdio.h>
#include<math.h>
int is_prime(int num)
{
int i
for(i=2i<=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
#include<stdio.h>
#define N 5
int main()
{
int arr[N]
int i, temp
printf("请输入%d个数:\n", N)
for(i=0i<Ni++){
scanf("%d", &arr[i])
}
for(i=0i<N/2i++){
temp = arr[i]
arr[i] = arr[N-1-i]
arr[N-1-i] = temp
}
printf("逆序输出数组:")
for(i=0i<Ni++){
printf("%d ", arr[i])
}
printf("\n")
return 0
}
1.
#include "stdio.h"void input(int d[][100],int m)
{
int r,c
for(r=0r<mr++)
{
printf("输入第%d行%d个数:",r+1,m)
for(c=0c<mc++)
{
scanf("%d",&d[r][c])
}
}
}
void fun(int d[][100],int m,int *r,int *c)
{
int i,j
*r=0*c=0
for(i=0i<mi++)
{
for(j=0j<mj++)
{
if(d[*r][*c]<d[i][j])
{
*r=i*c=j
}
}
}
}
int main()
{
int d[100][100]
int m
int i,j,r,c
printf("输入阶数:")
scanf("%d",&m)
input(d,m)
fun(d,m,&r,&c)
printf("最大元素位于(%d,%d),值为:%d\n",r+1,c+1,d[r][c])
}
2.
#include "stdio.h"void fun(char *p, char *q)
{
int i,j
i=0j=0
while(*(p+i)!='\0')
{
*(q+j)=*(p+i)
if((i+1)%3==0)
{
j+=1
*(q+j)=' '
}
i++
j++
}
*(q+j)='\0'
}
int main()
{
FILE *fp1,*fp2
char p[100],q[100]
if((fp1=fopen("form.txt","r"))==NULL)
printf("form.txt")
if((fp2=fopen("to.txt","w"))==NULL)
printf("to.txt")
fscanf(fp1,"%s",p)
fun(p,q)
fprintf(fp2,"%s",q)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)