C语言编程题目?

C语言编程题目?,第1张

下面是一个可以利用指针将两个字符串连接起来的 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 = 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

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

#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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7803471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存