概述
- 键盘输入字符串,遇‘#’结束,分别统计字母、数字和其它字符个数。
#include <stdio.h>
#include<string.h>
int main()
{
char str[100];
char c;
scanf("%s", str);
int letter = 0, space = 0, figure = 0, character = 0, i;
for (i = 0; (c = str[i]) != '#'; i++)
{
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
{
letter = letter + 1;
}
else if (c == ' ')
{
space = space + 1;
}
else if (c >= '0' && c <= '9')
{
figure = figure + 1;
}
else
{
character = character + 1;
}
}
printf("字母数:%d,空格数:%d,数字数:%d,其它字符:%d", letter, space, figure, character);
return 0;
}
- 编写程序,要求从键盘输入成绩,输出对应的等级(100分为A,90-99为B,80-89为C,70-79为D,60-69为E,小于60为F)。
#include<stdio.h>
int main()
{
double a,b;
scanf("%lf",&a);
switch (int(a / 10))
{
case 10: printf("A"); break;
case 9: printf("B"); break;
case 8: printf("C"); break;
case 7: printf("D"); break;
case 6: printf("E"); break;
default:
printf("F");
}
return 0;
}
- 设计一个简单的计算机程序,用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
#include<stdio.h>
int main()
{
double a,b;
char ch;
scanf("%lf %lf/n",&a,&b);
getchar();
ch = getchar();
switch (ch)
{
case '+': printf("%5.2lf",a + b); break;
case '-': printf("%5.2lf",a - b); break;
case '*': printf("%5.2lf",a * b); break;
case '/': printf("%5.2lf",a / b); break;
}
return 0;
}
- 用冒泡排序法对10个整数排序。10个整数用scanf函数输入。
#include <stdio.h>
int main()
{
int a[10], b, c, i;
for (i = 0; i <= 9; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i <= 8; i++)
{
for (b = 0; b <= 8 - i; b++)
{
if (a[b] < a[b + 1])
{
c = a[b];
a[b] = a[b + 1];
a[b + 1] = c;
}
}
}
for (i = 0; i <= 9; i++)
{
printf("%d ", a[i]);
}
return 0;
}
- 编写一个程序,包括主函数和如下子函数。(1) 输入10个无序的整数;(2) 用起泡方法从大到小排序;(3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。
#include <stdio.h>
#include<string.h>
#include<math.h>
void entrance(int w[]);
void ranking(int p[]);
void search(int c, int b[]);
int main()
{
int a[10];
entrance(a);
ranking(a);
search(9, a);
return 0;
}
void entrance(int w[])
{
int i;
for (i = 0; i <= 9; i++)
{
scanf("%d", &w[i]);
}
}
void ranking(int p[])
{
int i1, i2, t;
for (i1 = 0; i1 <= 8; i1++)
{
for (i2 = 0; i2 <= 9 - i1; i2++)
{
if (p[i2] < p[i2 + 1])
{
t = p[i2];
p[i2] = p[i2 + 1];
p[i2 + 1] = t;
}
}
}
for (i1 = 0; i1 <= 9; i1++)
{
printf("%d ", p[i1]);
}
printf("n");
}
void search(int c, int b[])
{
int low, high, mid, m[11], q, l;
low = 9;
high = 0;
while (low >= high)
{
mid = (low + high) / 2;
if (c == b[mid])
{
printf("第%d个", mid);
return;
}
else if (b[mid] > c)
{
high = mid + 1;
}
else
{
low = mid - 1;
}
}
l = low;
for(low; low <= 9; low++)
{
m[low + 2] = b[low + 1];
}
for (q = 0; q <= l; q++)
{
m[q] = b[q];
}
m[l + 1] = c;
for (q = 0; q <= 10; q++)
{
printf("%d ", m[q]);
}
}
- 用冒泡排序法对10个整数排序。10个整数用scanf函数输入。
#include <stdio.h>
int main()
{
int a[10], b, c, i;
for (i = 0; i <= 9; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i <= 8; i++)
{
for (b = 0; b <= 8 - i; b++)
{
if (a[b] < a[b + 1])
{
c = a[b];
a[b] = a[b + 1];
a[b + 1] = c;
}
}
}
for (i = 0; i <= 9; i++)
{
printf("%d ", a[i]);
}
return 0;
}
- 打开一个已经存放了一篇英文的文本文件“d:textpage.txt”,把其中的包含数字字符按在文章中出现的先后顺序在屏幕上输。例如:文件包含文字“iqwe23oise384kas9wi8jd6lsk4”,输出“2 3 3 8 4 9 8 6 1 4 ”。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int i, k;
char ch[100];
FILE* fp;
fp = fopen("C:\C\a.txt","r");
if (fp != NULL)
{
fscanf(fp, "%s", &ch);
}
for (i = 0; i <= strlen(ch); i++)
{
if (ch[i] >= '0' && ch[i] <= '9')
{
printf("%c ", ch[i]);
}
}
fclose(fp);
return 0;
}
- 编程序求100以内的素数,分别将它输出到显示器和x.txt文件中,要求每行5个数。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int judge(int n)
{
int i;
int t = 1;
for (i = 2; i < n; i++)
{
if (n % i == 0)
{
t = 0;
break;
}
}
return t;
}
int main()
{
int i, t = 1;
FILE* fp;
fp = fopen("a.txt", "w");
if (fp != NULL)
{
for (i = 2; i < 100; i++)
{
if (t == 6)
{
printf("n");
fprintf(fp, "n");
t = 1;
}
if (judge(i) == 1)
{
printf("%d ", i);
fprintf(fp, "%d ", i);
t++;
}
}
fclose(fp);
}
else
{
exit(0);
}
return 0;
}
- 有20个选手参加“超女”比赛,每个选手都有7名评委对其打分。任意一个选手的得分是这样计算的:在7名评委的打分中,去掉一个最高分,去掉一个最低分,剩下5名评委打分的平均值为该选手最后得分。根据该场景,设计函数:
int xuanshoudefen(float (*p)[7],float defen[],int n)该函数第一个参数接收7名评委对选手的打分,第二个参数存放选手的平均分,第三个参数接收共有几个选手。
主函数main()输入7名评委对2个选手的打分,调用 xuanshoudefen(float (*p)[7],float defen[],int n)函数,输出每位选手的成绩。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void xuanshoudefen(float(* p)[7], float defen[], int n);
int main()
{
int i, k;
float a[2][7];
float(*p)[7];
p = a;
float defen[2];
for (i = 0; i <= 1; i++)
{
for (k = 0; k <= 6; k++)
{
scanf("%f", &a[i][k]);
}
printf("n");
}
xuanshoudefen(p, defen, 2);
for (i = 0; i <= 1; i++)
{
printf("%5.2fn", defen[i]);
}
return 0;
}
void xuanshoudefen(float(* p)[7], float defen[], int n)
{
int i, k, sum, max, min;
float avg;
for (k = 0; k <= n - 1; k++)
{
sum = 0;
for (i = 0; i <= 6; i++)
{
sum = sum + *(*(p + k) + i);
}
max = *(*(p + k) + 0);
min = *(*(p + k) + 0);
for (i = 0; i <= 5; i++)
{
if (*(*(p + k) + i + 1) > max)
max = *(*(p + k) + i + 1);
if (*(*(p + k) + i + 1) < min)
min = *(*(p + k) + i + 1);
}
avg = (sum - min - max) * 1.0 / 5;
defen[k] = avg;
}
}
- 用指针的方式实现,3×3矩阵转置。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[3][3];
int* pa[3];
int i, j;
for (i = 0; i <= 2; i++)
{
pa[i] = a[i];
}
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 2; j++)
{
scanf("%d", &a[i][j]);
}
}
for (j = 0; j <= 2; j++)
{
for (i = 0; i <= 2; i++)
{
printf("%d", *(pa[i] + j));
}
printf("n");
}
}
最后
以上就是沉默黄豆为你收集整理的大一初学C时遇到比较难的题目的全部内容,希望文章能够帮你解决大一初学C时遇到比较难的题目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复