千万不要放弃,最好的东西总是压轴出场。
一,三角形的判断
描述:
已经给出三条边a,b,c,如果能构成三角形,判断三角形的类型(等边三角形,等腰三角形或普通三角形)。
输入描述:
题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述:
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出"Equilateral triangle!",等腰三角形则输出"Isosceles triangle!",其余的三角形则输出"Ordinary triangle!",反之输出"Not a triangle!"。
示例:
输入:2 3 2
3 3 3
输出:Isosceles triangle!
Equilateral triangle!
#include <stdio.h>int main()
{int a = 0;int b = 0;int c = 0;while (scanf("%d %d %d", &a, &b, &c) == 3){//判断if ((a + b > c) && (a + c > b) && (b + c > a)){if (a == b && b == c){printf("Equilateral triangle!\n");}else if ((a == b && b != c) || (a == c && c != b) || (b == c && c != a)){printf("Isosceles triangle!\n");}else{printf("Ordinary triangle!\n");}}else{printf("Not a triangle!\n");}}return 0;
}
二,使用指针打印数组内容
题目内容:
写一个函数打印arr数组的内容,不使用数组下标,使用指针
arr是一个整型一维数组
#include <stdio.h>
//使用指针打印数组内容
void print(int* p, int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(p + i));}printf("\n");
}int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz);return 0;
}
三,字符串逆序
题目内容:
逆序一个字符串的内容,并输出。
数据范围:1<=len(str)<=10000
(PS:scanf 遇到空格就不读取了,所以这个时候使用 gets 来读取数据)
#include <stdio.h>
//字符串逆序
int main()
{char arr[10001] = { 0 };gets(arr);//逆序int left = 0;int right = strlen(arr) - 1;while (left < right){char tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}printf("%s\n", arr);return 0;
}
四,计算求和
题目内容:
求Sn=a+aa+aaa+aaaa+aaaaa+………的前n项之和,其中a是一个数字。
#include <stdio.h>
//计算求和
int main()
{int a = 0;int n = 0;scanf("%d %d", &a, &n);int i = 0;int sum = 0;int k = 0;for (i = 0; i < n; i++){k = k * 10 + a;sum += k;}printf("%d\n", sum);return 0;
}
五,打印水仙花数
题目内容:
求出1~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和恰好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
(水仙花数是指三位数,所以此处求的“水仙花数”打了引号)
#include <stdio.h>
#include <math.h>//打印“水仙花数”
int main()
{int i = 0;for (i = 0; i <= 100000; i++){//判断“水仙花数”//1.计算i是几位数->nint n = 1;//任何一个数至少是一位数int tmp = i;//防止在循环内部改变循环变量出现问题int sum = 0;while (tmp / 10){n++;tmp /= 10;}//2.得到i每一位,计算它的n次方之和tmp = i;while (tmp){sum += pow(tmp % 10, n);tmp /= 10;}if (sum == i){printf("%d ", i);}}return 0;
}