ASCII码的排序
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c%*c",&a,&b,&c)!=EOF) //最前面前面加空格或者最后加%*c用于滤掉输入三个字符后的回车
{
if((a<b)&&(b<c))
printf("%c %c %c\n",a,b,c);//字符型变量以ASCII值参与表达式计算
if((a<c)&&(c<b))
printf("%c %c %c\n",a,c,b);
if((b<a)&&(a<c))
printf("%c %c %c\n",b,a,c);
if((b<c)&&(c<a))
printf("%c %c %c\n",b,c,a);
if((c<a)&&(a<b))
printf("%c %c %c\n",c,a,b);
if((c<b)&&(b<a))
printf("%c %c %c\n",c,b,a);
}
return 0;
}
/*
if(a>b) tmp=a,a=b,b=tmp;逗号表达式,简洁
if(a>c) tmp=a,a=c,c=tmp;
if(b>c) tmp=b,b=c,c=tmp;
printf("%c %c %c\n",a,b,c);
本例也可用这一串代码做出来,更为简洁*/
字符串的统计
//对于给定的一个字符串,统计其中数字字符出现的次数。
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d", &n);
char string[1000];
while (n--){//while(x)里面x是布尔型变量,当n不等于0时执行while循环中的内容,并且n自减一一直到n=0
scanf("%s", &string);
int length = strlen(string);//length读取输入字符串的长度
int count = 0;
int i;
for (i = 0;i < length;i ++){
if (string[i] >= '0' && string[i] <= '9')//判断数字字符,注意string[i]的使用
count ++;
}
printf("%d\n", count);
}
return 0;
}
复数乘法
#include<stdio.h>
#include<math.h>
int main()
{
double r1, r2, p1, p2;//double类型,不要用float,不准确,不会ac
double a, b;
scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);
a = (r1*r2)*cos(p1+p2);
b = (r1*r2)*sin(p1+p2);
if (fabs(a)<0.01){
a = 0;
}
if (fabs(b)<0.01){
b = 0;
}
if (b<0){
printf("%.2lf-%.2lfi", a, fabs(b));
}
else{
printf("%.2lf+%.2lfi", a, b);
}
return 0;
}
/* 题目要求当B为负数的时候才会输出-abs(B);但当B=比如-0.0001的时候 输出取两位的时候系统变成了0.00
但是程序是先执行判断B<0,此时就输出了-0.00 这里就是为什么扣了一分的原因。但0不是负数 所以应该输出0.00*/
丑数的个数
/*如果一个正整数分解后的的所有素因子最多只有2,3,5,7四种,则这个数称为丑数,
比如,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27就是前20个丑数。请编程判断一个数是否是丑数。*/
#include<stdio.h>
int main()
{
int n, i, a[10], k = 0;
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d", &a[i]);//为数组赋值
for (i=0; i<n; i++){
while (a[i]%2 == 0) a[i] /= 2;//四个while循环判断while是否能被2、3、5、7整除
while (a[i]%3 == 0) a[i] /= 3;//因为丑数只含有这四种因子。因此要吗被一个整除至1,要吗被多个
while (a[i]%5 == 0) a[i] /= 5;
while (a[i]%7 == 0) a[i] /= 7;
if (a[i] == 1) k++;
}
printf("%d", k);
}
打印沙漏
这个代码比较多,主要是你当时有一些其中的小用法想学习,可以看一下。
//首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
/*
#include<stdio.h>
int main()
{
int N,i,j,m,n,s,r,t,p,q;
char c1;
n=22;
scanf("%d",&N);
getchar();
c1=getchar();
while(N-((n*n-1)*2+1)<0){//第一个图像对应一个字符,第二个7个字符
n--;
m=n;}
s=N-(n*n-1)*2-1;//未用完的字符数
for(m=n;N-((m*m-1)*2+1)>=0;m--){//中间的表达式永真;行数的递减
i=(m-1)*2+1;//行数
if(m==0)
break;
for(i;i>0;i--){//倒序字符
printf("%c",c1);}
printf("\n");
j=n-m+1;
for(j;j>0;j--){//倒序空格
if(m==1)//m=1相当于输出n个空格,所以m=1时终止循环
break;
printf(" ");}}
for(t=0;t<n-1;t++){//顺序
r=n-t-2;//从n-1行开始的
for(p=0;p<r;p++){
printf(" ");}
for(q=0;q<2*(t+1)+1;q++){
printf("%c",c1);}
printf("\n");}
printf("%d",s);
return 0;
}
*/
/*
#include <stdio.h>
int main() {
int n;
char ch;
scanf("%d %c", &n, &ch);
int m = 1;
while((m + 3) * (m + 3) / 2 - 1 <= n) //计算沙漏第一行字符的个数
m += 2;
for(int i = m; i > 0; i -= 2) { //先打印倒三角(通过每一行多少字符数来设置for循环)
for(int j = 0; j < (m - i) / 2; ++j) //打印空格
printf(" ");
for(int j = 0; j < i; ++j) //打印字符
printf("%c", ch);
// for(int j = 0; j < (m -i) / 2; ++j) //题目默认字符后面的空格不用打印,注释掉
// printf(" ");
printf("\n");
}
for(int i = 3; i <= m; i += 2) { //类似的打印下面的正三角,除去重叠的顶点
for(int j = 0; j < (m - i) / 2; ++j)//第二行开始是三个字符数,所以i=3(每一行的i是字符个数,最大个数m减去i除以二就是所需空格个数)
printf(" ");
for(int j = 0; j < i; ++j)
printf("%c", ch);
// for(int j = 0; j < (m -i) / 2; ++j)
// printf(" ");
printf("\n");
}
printf("%d", n - (m + 1) * (m + 1) / 2 + 1);//计算并打印剩余字符的个数
return 0;
}
*/
/*这段是你那天上午第一次做的,有两处错误,记得不要段错误
#include<stdio.h>
int n;char s;
int temp(int i){
if (i==1) return 7;
else return temp(i-1)+4*i+2;
}
void put(int n){
int j, k, l;
for (j=1; j<=n; j++){//输出上半部
for (k=1; k<j; k++)
putchar(' ');
for (k=2*n-2*j+3; k>0; k--)
printf("%c", s);
putchar('\n');
}
for (j=1; j<=n+1; j++){//输出下半部
for (k=n+1-j; k>0; k--)
putchar(' ');
for (k=1; k<=2*j-1; k++)
printf("%c", s);
putchar('\n');
}
}
int main()
{
int i, N, p;//int主函数内不要定义temp
scanf("%d %c", &N, &s);
for (i=1; 1; i++){
if (N<7 && N>1000) break;//判断是N是否可以打印
if (temp(i)>N){
n = i-1;
break;
}
}if (n>=1){
put(n);
printf("%d", N-temp(i-1));
}
return 0;
}