在 scanf
中,%lf
应该改为 %f
,因为 n
是 float
类型,而 %lf
是用于 double
类型的
你一直弄错了,哥们,printf打印时,都使用%f,因为在 printf
中,float
会被自动提升为 double
(反正用%f就是了,就是这么个死东西)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
float n;
int m;
scanf("%f %d",&n,&m);
for (int i = 1; i <= m; i++) {
for (int j = 0; j < i; j++) {
printf("%6.2f",n);
if (j == i - 1) {
printf("\n");
}
}
}
return 0;
}
这种嵌套循环也要动脑子,你tm刚开始无脑int i和int j都为0 ?
数组下标的问题,字符结束符字符结束符,你猜他为什么叫字符结束符?那你定义的整型int数组还要给\0留位置?疯了!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int arr[10];
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < 10; i++) {
int max = arr[i];
int trues;
int j = i+1;
for (; j < 10; j++) {
if (arr[j] > max) {
max = arr[j];
trues = j;
}
}
if (max != arr[i]) {
int temp = arr[i];
arr[i] = max;
arr[trues] = temp;
}
}
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
重走来时路,发现还是不能一气呵成写完美
max和trues(为什么是trues呢,因为true是C语言中的关键词,不用最好,但我用了竟然可以运行)的定义的必要性
max用来做两个if的判断条件,第一次是比较arr[ i ]后面的数字是不是比arr[ i ]大,第二次是判断内存循环结束后是否要进行互换值的操作(这个最为关键,因为你必须考虑如果顺序就是对的,第一次if语句不会执行,那么trues的值就失去了意义),如果你不使用max,你将发现你的大脑必须想更多的东西
trues是为了保留每次第一个if语句执行时j的值,因为j会动态变动直至9,所以你必须设置变量去保留它
最后,记得j从i+1开始,这是你可以减轻程序负载的地方
输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变),包括空格
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main() {
char str[999];
fgets(str,999,stdin);
for (int i = 0; i < strlen(str)-1; i++) {
if (str[i] >= 'a' && str[i] < 'z' || str[i] >= 'A' && str[i] < 'Z') {
str[i] += 1;
}
else if (str[i] == 'z') {
str[i] = 'a';
}
else if (str[i] == 'Z') {
str[i] = 'A';
}
}
for (int i = 0; i < strlen(str) - 1; i++) {
printf("%c", str[i]);
}
return 0;
}
特殊点是z和Z,同时请考虑fgets最后保留的换行符(不想将他替换就不把他打印出来不就行了,haha)
Comments NOTHING