C언어 배열문제풀이 2
문제7번
이 문제는 구현이랑 가깝다고 생각한다.
字符与单词
编制程序,实现如下功能:
(1) 用户通过键盘输入一文档(假设最大长度不超过1000个字符),直到按句号“.”键时,文档输入结束。在文档输入时,需要做如下操作:字母的转换:在用户敲键盘的时候,输入的字符,如果它是大写字母,则回显相应的小写字母;如果它是小写字母,则回显相应的大写字母;其他字符,原样回显输出。
如输入:(输入时回显)a 19-YEAR-OLD SAYS HE’S READY TO MAKE A DIFFERENCE. (用户实际键盘输入为:A 19-year-old says he’s ready to make a difference.)
(2) 用户输入文档结束后,分别统计出其中的英文字母、空格、数字和其他字符的个数,并在屏幕上输出。
如上述文档输入结束后,屏幕输出如下信息:
英文字母个数:37
空格个数为:8
数字个数为:2
其他字符个数:4
(3) 用户输入两个单词word1 word2,程序自动将输入原始文档中的所有相应单词word1替换为word2后,将新文档输出。 (按照规则单词仅由一个或若干个空格间隔,其他符号不算为单词间隔符,如9-year-old 以及 he’s 都被认为是一个词)
要求输入文档为:In 2018, the price of Red Fuji apple is 4 yuan per catty; This variety of apples is big and round, and children like to eat apples in winter.
要求输入单词为:apples oranges
替换后的文档为:In 2018, the price of Red Fuji apple is 4 yuan per catty;This variety of oranges is big and round, and children like to eat oranges in winter.
#include<stdio.h>
int main()
{
char str[1000], word1[15], word2[15], str2[1000] = { 0 }, str3[1000] = { 0 };
int len, len2,len3, k, english = 0, space = 0, num = 0, other = 0;
printf("input str:");
gets(str);
printf("input word1:");
gets(word1);
printf("input word2:");
gets(word2);
len = strlen(str);
len2 = strlen(word1);
len3 = strlen(word2);
// 첫번째 기능 구현
for (int i = 0; i < len; i++) {
k = (int)str[i];
if (65 <= k && k <= 90) {
str3[i]= str[i] + 32;
english++;
}
else if (97 <= k && k <= 122) {
str3[i]= str[i] - 32;
english++;
}
else if (str[i]==' '){
str3[i] = str[i];
space++;
}
else if (48 <= k && k <= 57) {
str3[i] = str[i];
num++;
}
else {
str3[i] = str[i];
other++;
}
}
// 두번째 기능
int j = 0;
for (int i = 0; i < len; i++) {
int k = 0;
while (word1[k] == str[i + k]) {
k++;
}
if (k == len2 && str[i+k]==' ') {
for (int t = 0; t < len3; t++) {
str2[j] = word2[t];
j++;
}
i += len2-1;
}
else {
str2[j] = str[i];
j++;
}
}
//결과 출력
printf("%s\n", str3);
printf("english:%d\n", english);
printf("space:%d\n", space);
printf("number:%d\n", num);
printf("other:%d\n", other);
printf("%s\n", str2);
return 0;
}
문제8번
环形铁路路径
有一条环形铁路,共有n个车站(车站的顺序如图)。现有检查组去检查服务质量,从第i个车站开始,每隔m个车站检查一个,直到所有的车站都检查完毕。编写一个程序输出检查顺序。
#include<stdio.h>
int main()
{
int n, m, i;
int arr[100] = { 0 }, arr2[100] = { 0 };
int flag = 1;
printf("input n,m,i:");
scanf_s("%d %d %d",&n,&m,&i);
arr[i] = 1;
arr2[0] = i;
int j = 1;
while (flag) {
// 정거장 n을 넘었을때 넘어간 정거장으로 다시설정
if (i + m > n)i = m + i - n;
else i = i + m;
//정거장을 안 검사했으면 체크해주고 순서도 arr2에다가 삽입해주기
if (arr[i] == 0) {
arr[i] = 1;
arr2[j] = i;
j++;
}
// 각각 정거장 다 검사했는지 확인하기
for (int k = 1; k <= n; k++) {
if (arr[k] != 1)break;
if (k == n) flag = 0;
}
}
for (int i = 0; i < n; i++) printf("%d ", arr2[i]);
return 0;
}
문제9번
矩阵的初始化
已知,在C语言中,函数 srand() 与 rand()配合使用,可以生成一系列的随机数。
例如,运行下面的程序,可以生成10个0 到 99 之间的随机数。
(랜덤숫자 뽑아내는 예제 코드)
对于一个m*n阶的整数型矩阵进行初始化。要求:
用户键盘输入矩阵的阶,m与n (m,n在0~15之间 如输入m=12,n=8);
请使用上面样例提供的随机数生成函数,用0~m*n之间的随机数分别初始化该矩阵元素;
在屏幕上输出该矩阵。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int m, n;
int a[15][15]={ 0 };
printf("input m,n:");
scanf_s("%d %d",&m,&n);
srand(time(NULL));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = rand() %( m * n);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
Author And Source
이 문제에 관하여(C언어 배열문제풀이 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sungmin-choi/C언어-배열문제풀이-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)