2021-12-06 自动化专业C语言上机作业参考答案12
2021-12-06 自动化专业C语言上机作业参考答案12
·
上机练习12
p222.c
/*
编写一程序P222.C实现以下功能
从键盘上读入一行字符(约定:字符数≤127字节),按以下方法将其加密变换:
A->Z a->z
B->Y b->y
C->X c->x
…… ……
Z->A z->a
即字母A变成Z、字母B变成Y、…,非字母字符不变。最后在屏幕上先显示这一行字符的长度,再显示生成的密文。
编程可用素材:printf("Please input string: ")、printf("\nzi fu chuan chang du: …、printf("\nmi wen: …。
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str1[N], str2[N];
int i, n;
printf("Please input string: ");
gets(str1);
n = strlen(str1);
printf("\nzi fu chuan chang du: %d", n);
for (i = 0; i < n; i++)
{
if (str1[i] >= 'A' && str1[i] <= 'Z')
{
str2[i] = 'Z' + 'A' - str1[i];
}
else if (str1[i] >= 'a' && str1[i] <= 'z')
{
str2[i] = 'z' + 'a' - str1[i];
}
else
{
str2[i] = str1[i];
}
}
str2[i] = '\0';
printf("\nmi wen: %s", str2);
return 0;
}
p258.c
/*
编写一程序P258.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计该行字符中出现的字母、数字和其它字符的数量,最后按示例格式输出这三类字符的数量及其内容。
编程可用素材:
printf("Please intput the string: ");
printf("\nDigistal string length = …, Digitals: …\n"…;
printf("Letter string length = …, Letters: …\n"…;
printf("Symbol string length = …, Symbols: …\n"…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N], digital[N], letter[N], symbol[N];
int i, ld, ll, ls;
int len;
ld = ll = ls = 0;
printf("Please intput the string: ");
gets(str);
len = strlen(str);
// process
for (i = 0; i < len; i++)
{
if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
{
letter[ll++] = str[i];
}
else if (str[i] >= '0' && str[i] <= '9')
{
digital[ld++] = str[i];
}
else
{
symbol[ls++] = str[i];
}
}
digital[ld] = '\0';
letter[ll] = '\0';
symbol[ls] = '\0';
// output
printf("\nDigistal string length = %d, Digitals: %s\n", ld, digital);
printf("Letter string length = %d, Letters: %s\n", ll, letter);
printf("Symbol string length = %d, Symbols: %s\n", ls, symbol);
return 0;
}
p311.c
/*
编写一程序P311.C实现以下功能
①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。
②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,
则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如:
s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为:
1a2b3c4d5e6f7g8h9ijk
③在屏幕上输出新生成的s1。
编程可用素材:printf("Please input string1:")...、printf("Please input string2:")...、printf("\nstring1:...\n"...。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 256
int main(void)
{
char s1[N], s2[N], s3[N];
int l1, l2;
int i, j = 0;
printf("Please input string1:");
gets(s1);
printf("Please input string2:");
gets(s2);
l1 = strlen(s1);
l2 = strlen(s2);
if (l2 == 0)
{
printf("\nstring1:%s\n", s1);
exit(0);
}
else if (l1 == 0)
{
strcpy(s1, s2);
printf("\nstring1:%s\n", s1);
exit(0);
}
else
{
for (i = 0; i < (l1 > l2 ? l2 : l1); i++)
{
s3[j++] = s1[i];
s3[j++] = s2[i];
}
for (; i < (l1 > l2 ? l1 : l2); i++)
{
if (l1 > l2)
{
s3[j++] = s1[i];
}
else
{
s3[j++] = s2[i];
}
}
s3[j] = '\0';
}
strcpy(s1, s3);
printf("\nstring1:%s\n", s1);
return 0;
}
p726.c
/*
编写一程序P726.C实现以下功能
从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。
注意:
(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
(2)若用户输入时输入了很多字符,则仅读入前100个字符。
(3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
(4)编程可用素材:printf("input a string: ")、printf("\nThe string lenth is: …、printf("\nThe string is: …。
*/
#include <stdio.h>
#define N 101
int main(void)
{
char str[N];
char ch;
int i = 0;
int len = 0;
printf("input a string: ");
while ((ch = getchar()) != '\n' && i < 100 && ch != EOF)
{
str[i++] = ch;
}
len = i;
str[i] = '\0';
printf("\nThe string lenth is: %d", len);
printf("\nThe string is: %s", str);
return 0;
}
p743.c
/*
编写一程序P743.C实现以下功能
从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。
注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。编程可用素材:printf("Input a string: ")、printf("\nThe result is: ")。
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N];
int len;
int i;
printf("Input a string: ");
gets(str);
len = strlen(str);
printf("\nThe result is: ");
for (i = 0; i < len; i++)
{
printf("%c", str[len - i - 1]);
}
return 0;
}
p750.c
/*
编写一程序P750.C实现以下功能
输入字符串s(约定:字符数≤100字节),将字符串s中所有字符‘*’删除,并将修改后的字符串显示出来。
编程可用素材:printf("Please input a string: ")、printf("\nThe result is: ")。
*/
#include <stdio.h>
#include <string.h>
#define N 101
int main(void)
{
char str1[N], str2[N];
int i, j = 0;
int len;
printf("Please input a string: ");
gets(str1);
len = strlen(str1);
strcpy(str2, str1);
printf("\nThe result is: ");
for (i = 0; i < len; i++)
{
if (str2[i] != '*')
{
str1[j++] = str2[i];
}
}
str1[j] = '\0';
printf("%s", str1);
return 0;
}
p771.c
/*
编写一程序P771.C实现以下功能
编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。
注意事项:
(1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。
(2)字符串中可能只有1个单词。
(3)字符串中可能1个单词都没有,此时最长单词的长度为0。
(4)编程可用素材:printf("please input a string:\n")...、printf("\nmax_length of the string is: %d\n"...。
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char str[N];
int i, len, count, max;
printf("please input a string:\n");
gets(str);
len = strlen(str);
count = 0;
for (i = 0; i < len; i++)
{
if (str[i] == ' ')
{
count = 0;
}
if (str[i] != ' ')
{
count++;
printf("%d\n", count);
if (max < count)
{
max = count;
}
}
}
printf("\nmax_length of the string is: %d\n", max);
return 0;
}
p772.c
/*
编写一程序P772.C实现以下功能
对从键盘输入的一行字符(约定:字符数≤127字节)进行排序(按每个字符的ASCII值由小到大)并输出。
注意:程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,
编程可用素材:printf("input the string: ")...、printf("\nResult: ")...。
*/
#include <stdio.h>
#define N 128
int main(void)
{
char str[N], ch;
int i = 0;
int j;
int len;
printf("input the string: ");
while ((ch = getchar()) != '\n' && i < 128)
{
str[i++] = ch;
}
str[i] = '\0';
len = i;
printf("%s", str);
// sort
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - i - 1; j++)
{
if (str[j] > str[j + 1])
{
ch = str[j];
str[j] = str[j + 1];
str[j + 1] = ch;
}
}
}
printf("\nResult: ");
printf("%s", str);
return 0;
}
p827.c
/*
编写一程序P827.C实现以下功能
从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出长度最长的字符串的长度。
编程可用素材:
printf("Please input the first string:\t");
printf("Please input the second string:\t");
printf("Please input the third string:\t");
printf("\n最长的字符串长度为:…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char s1[N], s2[N], s3[N];
int l1, l2, l3, max;
printf("Please input the first string:\t");
gets(s1);
l1 = strlen(s1);
printf("Please input the second string:\t");
gets(s2);
l2 = strlen(s2);
printf("Please input the third string:\t");
gets(s3);
l3 = strlen(s3);
max = l1;
if (max < l2)
{
max = l2;
}
if (max < l3)
{
max = l3;
}
printf("\n最长的字符串长度为:%d", max);
return 0;
}
p828.c
/*
编写一程序P828.C实现以下功能
从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出最大的字符串。
编程可用素材:
printf("Please input the first string:\t");
printf("Please input the second string:\t");
printf("Please input the third string:\t");
printf("\n最大字符串是:…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
char s1[N], s2[N], s3[N];
char tmp[N];
printf("Please input the first string:\t");
gets(s1);
printf("Please input the second string:\t");
gets(s2);
printf("Please input the third string:\t");
gets(s3);
strcpy(tmp, s1);
if (strcmp(tmp, s2) < 0)
{
strcpy(tmp, s2);
}
if (strcmp(tmp, s3) < 0)
{
strcpy(tmp, s3);
}
printf("\n最大字符串是:%s", tmp);
return 0;
}
更多推荐
所有评论(0)