1.倒三角 (循环)
#include<stdio.h>
int main(int argc, char** argv) {
int i, j;
for (i = 0; i < 5; i++) {
for (j = 0; j < i; j++) {
printf(" ");
}
for (j = 4 - j; j > 0; j--) {
printf("* ");
}
printf("\n");
}
return 0;
}
2.对应数字的拼音
知识点:
char型与int型互换
代码:
#include<stdio.h>
int main(int argc, char** argv) {
char s[10][5] = {
"ling", "yi","er","san","si",
"wu","liu","qi","ba","jiu",
};
char a[20];//用字符数组表示输入的整数
scanf("%s", a);
int i = 0;//定义用来循环的i
//判断第一个字符是否为负号
if (a[0] == '-') {
printf("fu ");
++i;//若为负数则i从1开始循环
}
for (i;; ++i) {
//省略的是下面的if语句if (a[i + 1] == '\0') break;
int n = (int)a[i] - 48;//字符转数字
printf("%s", s[n]);//输出对应的拼音
if (a[i + 1] == '\0') break;
printf(" ");//判断下一个是否为a的结尾,是则跳出循环结尾无空格
}
return 0;
}
//主要思路:利用二维字符数组使数字与拼音对应,并用字符数组来表示输入的整数,字符ASCII码从48开始表示数字0,所以将字符转换成整型再 减去48 就得到对应的数字
sizeof(a)/sizeof(a[0])
都能自动求出数组的长度。需要注意的是,它求出的是数组的总长度,而不是数组中存放的有意义的数据的个数。
3.计算各位数字之和输出拼音
代码:
#include<stdio.h>
int main(int argc, char** argv){
char x[100];
int digit, i = 0, sum = 0; //digit每一位数字
char arr[10][10];
scanf("%s", x); //用户输入一串数
for (i = 0; x[i] != '\0'; i++){
sum += (x[i] - '0');
}
i = 0;
while (sum != 0)
{
digit = sum % 10;
switch (digit) {
case 0:strcpy(arr[i], "ling"); break;
case 1:strcpy(arr[i], "yi"); break;
case 2:strcpy(arr[i], "er"); break;
case 3:strcpy(arr[i], "san"); break;
case 4:strcpy(arr[i], "si"); break;
case 5:strcpy(arr[i], "wu"); break;
case 6:strcpy(arr[i], "liu"); break;
case 7:strcpy(arr[i], "qi"); break;
case 8:strcpy(arr[i], "ba"); break;
case 9:strcpy(arr[i], "jiu"); break;
}
i++;
sum = sum / 10;
}
i--;
for (; i > 0; i--){
printf("%s ", arr[i]);
}
printf("%s", arr[0]);
}
4.给书命名和定价,找出最高和最低价格
#include <stdio.h>
//定义书的结构体
struct book {
char a[31]; //书名 且字符串长度不超过30
double b; //价格
};
int main(int argc, char** argv) {
int n, i, max = 0, min = 0;
double temp;
struct book m[10]; //定义数组,元素为10个书的结构体
scanf("%d", &n); //输入书的数量
getchar(); //吸收scanf函数留下的回车,getchar()函数的功能是一个一个地读取你所输入的字符。
//给数组赋值,填写书的信息
for (i = 0; i < n; i++){
//name
gets(m[i].a);
//price
scanf("%lf", &m[i].b);
getchar();
}
//输出价格最高的
for (i = 1, temp = m[0].b; i < n; i++) {
if (m[i].b > temp) {
max = i;
temp = m[i].b;
}
}
printf("%.2lf, %s\n", m[max].b, m[max].a);
//输出价格最低的
for (i = 1, temp = m[0].b; i < n; i++) {
if (m[i].b < temp) {
min = i;
temp = m[i].b;
}
}
printf("%.2lf, %s", m[min].b, m[min].a);
return 0;
}
5. 分段函数
#include<stdio.h>
int main(int argc, char** argv) {
int n = 0;
scanf("%d", &n);
if (n < 0) {
printf("sign(%d) = -1", n);
}
else if (n == 0) {
printf("sign(%d) = 0", n);
}
else {
printf("sign(%d) = 1", n);
}
return 0;
}
6. 税率
#include<stdio.h>
int main(int argc, char** argv) {
double wage, tax, rate;
scanf("%lf", &wage);//输入工资
if (wage <= 1600L) {
rate = 0.00;
tax = 0;
}
else if (wage > 1600L && wage <= 2500L) {
rate = 0.05;
tax = rate * (wage - 1600L);
}
else if (wage > 2500L && wage <= 3500L) {
rate = 0.10;
tax = rate * (wage - 1600L);
}
else if (wage > 3500L && wage <= 4500L) {
rate = 0.15;
tax = rate * (wage - 1600L);
}
else {
rate = 0.2;
tax = rate * (wage - 1600L);
}
printf("wage = %.0lf\nrate = %.2lf\ntax = %.2lf", wage, rate, tax);
return 0;
}