HAUTOJ 1100~1200题题解

1100: 求组合数(函数专题)

C
#include<stdio.h>
long long int t=1,a,b;
long fact(long n)
{
	t = 1;
	for (int i = 1; i <= n; i++)
		t *= i;
	return t;
}
int m, k;
int main()
{
	scanf("%d%d", &m, &k);
	a = fact(m - k);
	b = fact(k);
	t = fact(m);
	printf("%lld", t / (a*b));
}
## 1101: 逆序数字(函数专题)
#### C
```c
#include<stdio.h>
#include<math.h>
int inverse(int n)
{
	int i,b, a,t,m,c;
	t = 0;
	a = log10(n)+1;
	for (i = 1; i <= a; i++)
	{
		m = n;
		b = n / pow(10, a - i);
		b = b % 10;
		t += b * pow(10, i - 1);
	}
	return t;
}
int main()
{
	int n,q,p;
	scanf("%d", &n);
	q = inverse(n);
	printf("%d", q + n);
}

1101: 逆序数字(函数专题)

C
#include<stdio.h>
#include<math.h>
int inverse(int n)
{
	int i,b, a,t,m,c;
	t = 0;
	a = log10(n)+1;
	for (i = 1; i <= a; i++)
	{
		m = n;
		b = n / pow(10, a - i);
		b = b % 10;
		t += b * pow(10, i - 1);
	}
	return t;
}
int main()
{
	int n,q,p;
	scanf("%d", &n);
	q = inverse(n);
	printf("%d", q + n);
}

1102: 火车票退票费计算(函数专题)

C
#include<stdio.h>
double CancelFee(double price)
{
	price = price * 2;
	price = price * 0.05+0.5;
	price = (int)price;
	return price / 2;
}
int main()
{
	double a;
	scanf("%lf", &a);
	a = CancelFee(a);
	printf("%.1f",a);
}

1103: 平均学分绩点(函数专题)

C
#include<stdio.h>
int point(int p)
{
	if (p >= 50)
	{
		p = p - 50;
		p = p / 10;
		return p;
	}
	else
		return 0;
}
int main()
{
	int n, i, p,a,t,A=0;
	double m=0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d %d", &a, &p);
		p = point(p);
		t = p * a;
		m += t;
		A += a;
	}
	m = m / A;
	printf("%.1f", m);
}

1104: 求因子和(函数专题)

C
#include<stdio.h>
int sum;
int FacSum(int n)
{
	for (int i = 1; i < n; i++)
	{
		if (n%i == 0)
			sum += i;
	}
	return sum;
}
int main()
{
	int n;
	scanf("%d", &n);
	n = FacSum(n);
	printf("%d", n);
}

1105: 判断友好数对(函数专题)

C
#include<stdio.h>
int sum;
int FacSum(int n)
{
	sum = 0;
	for (int i = 1; i < n; i++)
	{
		if (n%i == 0)
			sum += i;
	}
	return sum;
}
int main()
{
	int n,m,a,b,t=0;
	scanf("%d%d", &n,&m);
	for (; n <= m; n++)
	{
		a = FacSum(n);
		b = FacSum(a);
		if (n == b&&n!=a&&a<=m)
		{
			printf("%d %d\n", n, a);
			t = 1;
			n = a;
		}
	}
	if (t == 0)
		printf("No answer");

}

1106: 回文数(函数专题)

C
#include<stdio.h>
#include<math.h>
int huiwen(int a)
{
	int b,c,d,e,t=0,m,n;
	b=log10(a);
	m=b;
	for(int i=1;i<=(b+1)/2;i++,m--)
	{
		c=a/pow(10,m);
		c=c%10;
		e=pow(10,i);
		d=a%e;
		n=pow(10,b-m);
		d=d/n;
		if(d==c)
		continue;
		else
		{
		t=1;
		break;
		}
	}
	if(t!=1)
	return 1;
	else
	return 0;
} 
int main()
{
	int a,b,t;
	scanf("%d%d",&a,&b);
	for(;a<=b;a++)
	{
		t=huiwen(a);
		if(t==1)
		printf("%d ",a);
		else
		continue;
	}
}

1107: 回文数猜想(函数专题)

C
#include<stdio.h>
#include<math.h>
int huiwen(int a)
{
	int sum=0;
	while (a)
	{
		sum = sum * 10 + a % 10;
		a /= 10;
	}
	return sum;
}
int main()
{
	int n, m;
	scanf("%d", &n);
	printf("%d ",n); 
	m = huiwen(n);
	while(n != m)
	{
		m = huiwen(n);
		if(m==n)
		{
		break;
		}
		n += m;
		printf("%d ", n);
	}
}

1108: 打印数字图形(函数专题)

C
#include<stdio.h>
void PrintLine(int m, int n)
{
	int t = 0;
	for (int p = 1; p < n; p++)
		printf(" ");
	for (int i = 1; i <= m; i++)
	{
		if (t == 0)
			printf("%d", i);
		else if (t == 1)
			printf("%d", i - m);
		if (i == m)
			t = 1;
	}
	for (int i = m - 1; i >= 1; i--)
	{
		printf("%d", i);
	}

}
int main()
{
	int a, b, c, t = 0, n;
	scanf("%d", &a);
	for (int i = 1; i <= a; i++)
	{
		if (t == 0)
			n = a - i+1;
		else
			n =-1*(a-i)+1;
		if (i == a)
			t = 1;
		PrintLine(i, n);
		printf("\n");
	}
	t = 0;
	for (int i = a-1; i >=1; i--)
	{
		if (t == 0)
			n = a - i + 1;
		else
			n = -1 * (a - i) + 1;
		if (i == a)
			t = 1;
		PrintLine(i, n);
		printf("\n");
	}
}

1109: 数根(函数专题)

C
#include<stdio.h>
#include<math.h>
int digitSum(int n)
{
	int a,t=0;
	a = log10(n) + 1;
	for (int i = 1; i <= a; i++)
	{
		t += n % 10;
		n /= 10;
	}
	return t;
}
int main()
{
	int n;
	scanf("%d", &n);
	while(n>=10)
	n = digitSum(n);
	printf("%d", n);
}

1110: 最近共同祖先(函数专题)

C
#include<stdio.h>
int common(int x, int y)
{
	if (x == y)
		return x;
	if (x > y)
		common(x / 2, y);
	else
		common(x, y / 2);
}
int main()
{
	int x, y,t;
	scanf("%d%d", &x, &y);
	t=common(x, y);
	printf("%d",t);
}

1111: 多个整数的逆序输出(函数专题)

C
#include<stdio.h>
void inverse(int n)
{
    int a;
    scanf("%d", &a);
    if (n > 1)
    {
        inverse(n - 1);
        printf("%d ", a);
    }
    if (n == 1)
        printf("%d ", a);
}
int main()
{
    int n, a;
    scanf("%d", &n);
    inverse(n);
}

1112: 进制转换(函数专题)

C
#include<stdio.h>
void convert(int n) 
{ 
   if(n > 0) 
   { 
       convert(n/2); 
      printf("%d", n % 2);
    }
} 
int main()
{
    int n;
    scanf("%d", &n);
    convert(n);
}

1113: 递归调用的次数统计(函数专题)

C
#include<stdio.h>
int fib(int k);
int i=0;

int main(void)
{
    int n;
    scanf("%d", &n);
    printf("%d\n", fib(n));
    printf("递归调用了%d次", i);
    return 0;
}
int fib(int k)
{
    i++;
    if (k == 1 || k == 2)
        return 1;
    else
        return fib(k - 1) + fib(k - 2);
}

1114: 逆序(数组)

C
#include<stdio.h>
#define N 10
int main()
{
	int n,i;
	scanf("%d", &n);
	int a[N];
	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);
	for (i = n - 1; i >= 0; i--)
		printf("%4d", a[i]);

}

1115: 数组最小值(数组)

C
#include<stdio.h>
#define N 1000
int main()
{
	int a[N],n,max,t=0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		if(i==0)
		max = a[i];
		if (max > a[i])
		{
			max = a[i];
			t = i;
		}
	}
	printf("%d %d", max, t);
}

1116: 删除元素(数组)

C
#include<stdio.h>
void PrintArr(int b[],int n)
{
	for(int i=0;i<=n;i++)
	{
		printf("%d ",b[i]);
	}
}
void del(int a[], int n, int i)
{
	int t=0;
	while(t!=i)
	t++;
	for(;t<=n;t++)
	{
		a[t]=a[t+1];
	}
	PrintArr (a,n-2);
}

int main()
{
	int a[10],n,i;
	scanf("%d\n",&n);
	for(i=0;i<=n-1;i++)
	scanf("%d",&a[i]);
	scanf("%d",&i);
	del(a,n,i);
}

1117: 查找数组元素(数组)

C
#include<stdio.h>
int m = 0;
void PrintArr(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%4d",a[i]);
	}
}
void del(int a[], int n, int i)
{
	int t = 0;
	while (t != i)
		t++;
	for (; t <= n; t++)
	{
		a[t] = a[t + 1];
	}
	PrintArr(a, n - 1);
}
int find(int a[], int n, int x)
{
	for (int i = 0; i < n; i++)
	{
		if (a[i] == x)
			return i;
		else
			m++;
	}
	if (m == n)
		return -1;
}

int main()
{
	int n, a[10], x;
	scanf("%d",&n);
	for (int i = 0; i < n; i++)
		scanf("%d",&a[i]);
	scanf("%d",&x);
	m = find(a, n, x);
	if (m == -1)
		printf("Not Found");
	else
		del(a, n, m);
}

1118: 有序数组的元素添加

C
#include<stdio.h>
void insert(int a[], int n, int num);
void PrintArr(int a[], int n);
int main()
{
	int a[100], n, num;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	scanf("%d", &num);
	insert(a, n, num);
}
void insert(int a[], int n, int num)
{
	int i;
	for ( i = n-1; a[i] > num; i--)
	{
		a[i+1] = a[i];
	}
	a[i+1] = num;
	PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
	for (int i = 0; i <= n; i++)
		printf("%d ", a[i]);
}

1119: 一维数组排序(数组)

C
#include<stdio.h>
void sort(int a[], int n);
void PrintArr(int a[], int n);
int main()
{
	int a[10],n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	sort(a, n);
}
void sort(int a[], int n)
{
	int m;
	for(int i=0;i<n;i++)
		for (int j = 0; j < n; j++)
		{
			if (a[i] < a[j])
			{
				m = a[i];
				a[i] = a[j];
				a[j] = m;
			}
		}
	PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
	for (int i = 0; i < n; i++)
		printf("%d ", a[i]);
}

1120: 最值交换

C
#include<stdio.h>
int MinIndex(int a[], int n);
int MaxIndex(int a[], int n);
void PrintArr(int a[], int n);
int main()
{
	int m,n, a[10],min,max;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	min = MinIndex(a, n);
	m = a[min];
	a[min] = a[0];
	a[0] = m;
	max = MaxIndex(a, n);
	m = a[max];
	a[max] = a[n-1];
	a[n-1] = m;
	PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
	for (int i = 0; i < n; i++)
		printf("%d ", a[i]);
}
int MinIndex(int a[], int n)
{
	int min,t=0;
	min = a[0];
	for (int i = 0; i < n; i++)
	{
		if (min > a[i])
		{
			min = a[i];
			t = i;
		}
	}
	return t;
}
int MaxIndex(int a[], int n)
{
	int max, t = 0;
	max = a[0];
	for (int i = 0; i < n; i++)
	{
		if (max < a[i])
		{
			max = a[i];
			t = i;
		}
	}
	return t;
}

1121: 电梯

C
#include<stdio.h>
int main()
{
	int a[1000], n, t = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	for (int i = 0; i < n; i++)
	{
		if (i == 0)
			t += (a[0]) * 6 + 5;
		else if (a[i] > a[i - 1])
			t += (a[i] - a[i - 1]) * 6 + 5;
		else if (a[i] < a[i - 1])
			t += (a[i - 1] - a[i]) * 4 + 5;
		else if (a[i] == a[i - 1])
			t += 5;
	}
	printf("%d", t);
}

1122: 小明的调查作业

C
#include<stdio.h>
int xiangtonggeshu(int a[],int n);
void paixv(int a[], int n, int t);
void shanchu(int a[], int n);
int main()
{
	int a[1000],n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	shanchu(a, n);
}
int xiangtonggeshu(int a[], int n)
{
	int t=0;
	for (int i = 0; i < n; i++)
			if (a[i]>=0)
				t += 1;
	return t;
}
void shanchu(int a[], int n)
{	
	int m;
	for (int i = 0; i < n; i++)
	{
		for (int j = i+1; j < n; j++)
		{
			if (a[i] == a[j]&&a[i]>=0)
			{
				for (int k = j; k < n; k++)
				{
					a[k] = a[k + 1];
				}
				j -= 1;
				n -= 1;
			}
		}
	}
	int t;
	t = xiangtonggeshu(a, n);
	printf("%d\n", t);
	paixv(a, n, t);
}
void paixv(int a[], int n, int t)
{
	int m;
	for(int i=0;i<t;i++)
		for(int j=0;j<t;j++)
			if (a[i] < a[j])
			{
				m = a[i];
				a[i] = a[j];
				a[j] = m;
			}
	for (int p = 0; p < t; p++)
		printf("%d ", a[p]);
}

1123: 成绩排序

C(code1)
#include<stdio.h>
#include<string.h>
void paixv();
int a[20], n;
char b[20][2000];
int main()
{
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%s", b[i]);
		scanf("%d", &a[i]);
	}

	paixv();

}
void paixv()
{
	int m;
	char temp[20];
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
		{
			m = strcmp(b[i], b[j]);
			if (a[i] > a[j])
			{
				m = a[j];
				a[j] = a[i];
				a[i] = m;
				strcpy(temp, b[j]);
				strcpy(b[j], b[i]);
				strcpy(b[i], temp);
				j--;
			}
			else if (a[i] == a[j]&&m < 0)
				{
					m = a[j];
					a[j] = a[i];
					a[i] = m;
					strcpy(temp, b[j]);
					strcpy(b[j], b[i]);
					strcpy(b[i], temp);
					j--;
				}
		}
	for (int i = 0; i < n; i++)
	{
		{
			printf("%s ", b[i]);
		}
		printf("%d\n", a[i]);
	}
}

C(code2)
#include <stdio.h>
#include <string.h>
int main()
{
	int n, fraction[21], i, j, mid;
	char name[21][21], mid1[21];
	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%s%d", name[i], &fraction[i]);
	for (i = 0; i < n - 1; i++)
	{
		for (j = i + 1; j < n; j++)
		{
			if (fraction[i] < fraction[j])
			{
				mid = fraction[i]; fraction[i] = fraction[j]; fraction[j] = mid;
				strcpy(mid1, name[i]); strcpy(name[i], name[j]); strcpy(name[j], mid1);
			}
			if (fraction[i] == fraction[j])
				if (strcmp(name[i], name[j]) > 0)
				{
					mid = fraction[i]; fraction[i] = fraction[j]; fraction[j] = mid;
					strcpy(mid1, name[i]); strcpy(name[i], name[j]); strcpy(name[j], mid1);
				}
		}
	}
	for (i = 0; i < n; i++)
		printf("%s %d\n", name[i], fraction[i]);
	return 0;
}

1124: 两个有序数组合并

C
#include<stdio.h>
int m, n, a[1000001], b[1000001], i, c[2000003], p=0, q=0;
int main()
{
	scanf("%d", &m);
	for (i = m-1; i >= 0; i--)
	{
		scanf("%d", &a[i]);
	}
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d", &b[i]);
	}
	for (i = 0; i < m + n;i++)
	{
		if (a[p] > b[q])
		{
			c[i] = a[p];
			p++;
		}
		else
		{
			c[i] = b[q];
			q++;
		}
	}
	for (i = 0; i < m + n; i++)
	{
		printf("%d ", c[i]);
	}
}

1125: 上三角矩阵的判断

C
#include<stdio.h>
int IsUpperTriMatrix(int a[][11], int n);
int main()
{
	int m, a[11][11];
	scanf("%d", &m);
	for(int i=0;i<m;i++)
		for (int j = 0; j < m; j++)
		{
			scanf("%d", &a[i][j]);
		}
	m = IsUpperTriMatrix(a, m);
	if (m)
		printf("YES");
	else
		printf("NO");
}
int IsUpperTriMatrix(int a[][11], int n)
{
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
		{
			if (j < i)
				if (a[i][j] != 0)
					return 0;
		}
	return 1;

}

1126: 布尔矩阵的奇偶性

C
#include<stdio.h>
int BalanceMatrix(int a[][111], int n);
int X, Y;
int main()
{
	int m, a[111][111];
	scanf("%d", &m);
	for(int i=0;i<m;i++)
		for (int j = 0; j < m; j++)
		{
			scanf("%d", &a[i][j]);
		}
	m = BalanceMatrix(a, m);
	if (m == 1)
		printf("OK");
	else if (m == 2)
		printf("Change bit(%d,%d)",X,Y);
	else
		printf("Corrupt");
}
int BalanceMatrix(int a[][111], int n)
{
	int t, x=-1, y=0,r=0;
	for (int i = 0,j; i < n; i++)
	{
		t = 0;
		for (j = 0; j < n; j++)
		{
			t += a[i][j];
		}
		if (t % 2 != 0)
		{
			X = i;
			r++;
		}
		if (r == 2)
		{
			return -1;
		}
	}
	for (int j = 0, i; j < n; j++)
	{
		t = 0;
		for (i = 0; i < n; i++)
			t += a[i][j];
		if (t % 2 != 0)
		{
			Y = j;
			y++;
		}
		if (y == 2)
			return -1;
	}
		if (r == y && r == 1)
		{
			return 2;
		}
	if (r == 1 && y == 0 || y == 1 && r == 0)
	{
		return -1;
	}
	return 1;
}

1127: 矩阵乘积

C
#include<stdio.h>
int main()
{
	int m, p, n, a[11][11], b[11][11], c[11][11],t=0,x=0,y=0;
	scanf("%d %d %d", &m, &p, &n);
	for (int i = 0, j; i < m; i++)
		for (j = 0; j < p; j++)
			scanf("%d", &a[i][j]);
	for (int i = 0, j; i < p; i++)
		for (j = 0; j < n; j++)
			scanf("%d", &b[i][j]);
	for (int i = 0, j,k; i < m; i++)
	{
		for (k = 0; k < n; k++)
		{
			for (j = 0; j < p; j++)
			{
				t += a[i][j] * b[j][k];
			}
			c[x][y] = t;
			y++;
			if (y == n)
			{
				x++;
				y = 0;
			}
			t = 0;
		}
	}
	for (int i = 0, j; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d ", c[i][j]);
		}
		printf("\n");
	}


}

1128: 课程平均分

C
#include<stdio.h>
int main()
{
	int m, n;
	double ans=0,a[1002][20];
	scanf("%d%d", &m, &n);
	for (int i = 0, j; i < m; i++)
		for (j = 0; j < n; j++)
			scanf("%lf", &a[i][j]);
	for (int j = 0, i; j < n; j++)
	{
		ans = 0;
		for (i = 0; i < m; i++)
		{
			ans += a[i][j];
		}
		printf("%.2f ", ans / m);
	}
}

1129: 第几天

C
#include<stdio.h>
int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
int main()
{
	int year,month,day,ans=0,pd;
	scanf("%d-%d-%d",&year,&month,&day);
	if(year%4==0&&year%100!=0||year%400==0)
		pd=0;
	else
		pd=1;
	for(int i=1;i<month;i++)
		ans+=a[pd][i];
	ans+=day;
	printf("%d",ans);
}

1130: 杨辉三角

C
#include<stdio.h>
int main()
{
	int n,a[31][31]={0};
	scanf("%d",&n);
	a[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			a[i][j]=a[i-1][j]+a[i-1][j-1];
			printf("%d ",a[i][j]);
		}
		printf("\n"); 
	} 
}

1131: 最常用字符

C
#include<stdio.h>
int a[26]={0},t,m;
char b[105]={0};
int main()
{
	gets(b);
	for(int i=0;b[i]!='\0';i++)
	{
		if((int)b[i]==32)
		{
			continue;
		} 
		if(b[i]>='a'&&b[i]<='z')
			a[b[i]-'a'+1]++;
		else
			a[b[i]-'A'+1]++;
	}
	t=a[1];
	m=1;
	for(int i=1;i<=26;i++)
	if(t<a[i])
	{
		t=a[i];
		m=i; 
	} 
	printf("%c",m+96);
} 

1132: 数字字符统计(多实例)

C
#include<stdio.h>
int main()
{
	char a[1005];
	int n, t;
	scanf("%d\n", &n);
	for (int x = 1; x <= n; x++)
	{
		gets(a);
		t = 0;
		for (int i = 0; a[i] != '\0'; i++)
			if (a[i] >= '0' && a[i] <= '9')
				t++;
		printf("%d\n", t);
	}
}

1133: 单词个数统计

C
#include<stdio.h>
#include<string.h>
int main()
{
	char str[1000];
	int i,len,count;
	gets(str);
	count=0;
	for(i=0;str[i]!='\0';i++)
	{
		if(str[i]!=' '&&str[i+1]==' ')
			count++;
	}
	len=strlen(str);
	if(str[len-1]!=' ')
		count++;
	printf("%d\n",count);
	return 0;
}

1134: 字符串转换

C
#include<stdio.h>
int he(long long int t);
char a[112],b[112];
int j=0,c[112],n=0;
long long int t;
int main()
{

	gets(a);
	for(int i=0;a[i]!='\0';i++)
	{
		if(a[i]>='0'&&a[i]<='9')
		{
			b[j]=a[i];
			j++;
		}
	}
	for(int i=0;i<j;i++)
	{
		c[i]=(int)b[i]-48;
	}
	t=he(c[0]);
	printf("%lld",t*2);
} 
int he(long long int t)
{
	n++;
	if(n<j)
	{
	t*=10;
	t=he(t+c[n]);
	}
	return t;
}

1135: 算菜价

C
#include<stdio.h>
int main()
{
	double w, p,ans=0;
	while (scanf("%*s%lf%lf", &w, &p) != EOF) {
		ans += w * p;
	}
	printf("%.1f", ans);
}

1136: 首字母变大写

C
#include<stdio.h>
#include<ctype.h>
int main()
{
    int i=0;
    char a[105];
    gets(a);
    a[0]=toupper(a[0]);
    while(a[i]!='\0')
    {
        if(a[i]==' '&&a[i+1]!=' ')
            a[i+1]=toupper(a[i+1]);
        i++;
    }
    puts(a);
}

1137: 查找最大元素

C
#include<stdio.h>
#include<ctype.h>
int main()
{
    int i=0,t[201]={0},m=0;
    char a[205],max;
    gets(a);
    max=a[0];
    t[m]++;
    while(a[i]!='\0')
    {
        if(max<a[i])
        {
            for(int k=0;k<201;k++) t[k]=0;
            t[i]=1;
            max=a[i];
        }
        else if(max==a[i])
        {
            t[i]=1;
        }
        i++;
    }
    i=0;
    while(a[i]!='\0')
    {
        printf("%c",a[i]);
        if(t[i])
        printf("(max)");
        i++;
    }
}

1138: C语言合法标识符

C
#include"stdio.h"
main()
{
    int i=1;
    char ch[55];
    gets(ch);
    if(ch[0]>='a'&&ch[0]<='z'||ch[0]>='A'&&ch[0]<='Z'||ch[0]=='_')
    {while(ch[i]!='\0')
    {
        if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'||ch[i]>='0'&&ch[i]<='9'||ch[i]=='_')
        {
            i++;
            continue;
        }
        else
        {
            printf("no");
            return 0;
        }
    }
    printf("yes");
    }
    else
    printf("no");

}

1139: 输出最短字符串

C
#include<stdio.h>
#include<string.h>
int main()
{
	int n,i,m=0,t;
	scanf("%d\n",&n);
	char a[n][1001];
	for(i=0;i<n;i++)
	gets(a[i]);
	int s=1;
	t=strlen(a[0]);
	for(i=1;i<n;i++)
	{

		if(strlen(a[i])<t)
		{
			t=strlen(a[0]+1001*i);
			m=i;
		}
	}
	puts(a[m]);
	return 0;
 }

1140: 小数点后第n位(多实例)

C++
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a;
	int n, i, j,l;
	scanf("%d%*c", &n);
	while (n--)
	{
		cin >> a >> i;
		l = a.size();
		j = 0;
		while (a[j] != '.' && j < l) j++;
		if (l-j-1<i)
			cout << 0;
		else
			cout << a[j + i] << endl;
	}
}

1141: 进制转换

C++
#include<cstdio>
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
void convert(long long int n, char str[]);
int main()
{
	long long n;
	char str[1000]={'\0'};
	cin>>n;
    if(n!=0)
	convert(n, str);
	else
    printf("0");
}
void convert(long long int n, char str[])
{

	size_t l = 1;
	for (int i = 0; pow(2, i) <= n; i++)
	{
		l = i;
	}
	for (int i = l; i >= 0; i--)
	{
		str[i] = n % 2 + 48;
		if (n % 2)
			n /= 2;
		else
			n = (n + 1) / 2;
	}
	cout << str << endl;
}

1142: 二进制数的大小

C
#include<stdio.h>
#include<math.h>
int a[3] = { 0 }, i;
void bToD(char str[])
{
	int j = 0;
	while (str[j] != '\0')
	{
		a[i] *= 2;
		a[i] += (int)(str[j] - 48);
		j++;
	}

}
int main()
{
	char str[32];
	for (i = 0; i < 3; i++)
	{
		scanf("%s", str);
		 bToD(str);
	}
	int t = a[0];
	if (a[0] > a[1])
	{
		a[0] = a[1];
		a[1] = t;
	}
	if (a[0] > a[2])
	{
		t = a[0];
		a[0] = a[2];
		a[2] = t;
	}
	if (a[1] > a[2])
	{
		t = a[1];
		a[1] = a[2];
		a[2] = t;
	}
	for (i = 0; i < 3; i++)
		printf("%d ", a[i]);
}

1143: 最大值—多种进制

C++
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int KToD(char str[], int k);
int main()
{
    char str[10000];
    int n, t,max=0,m;
    cin >> n;
    getchar();
    while (n--)
    {
        scanf("%s%d", str, &t);
        m = KToD(str, t);
        if (m > max)
            max = m;
    }
    printf("%d\n",max);
}
int KToD(char str[], int k)
{
    int i = 0, l, ll, ans = 0;
    ll =strlen(str);
    //cout << ll << endl;
    l = ll;
    for (i = 0; i < ll; i++)
    {
        ans += (str[--l]-'0') * pow(k, i);
    }
    
    return ans;
    //函数返回k进制数str对应十进制整数
}

1144: 多种进制

C++
#include<iostream>
#include<cmath>
using namespace std;
void dToK(int n, int k, char str[]);
int main()
{
    int a;
    char str[10000];
    cin >> a;
    dToK(a, 2, str);
    dToK(a, 3, str);
    dToK(a, 7, str);
    dToK(a, 8, str);
}
void dToK(int n, int k, char str[])
{
    int t = log(n) / log(k);
    for (int i = t; i >= 0; i--)
    {
        str[i] =n % k+48;
        n /= k;
    }
    for (int i = 0; i <= t; i++)
        putchar(str[i]);
    putchar('\n');
}

1145: 有问题的里程表(2)

C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int n,m,sum=0;
    int i;
    scanf("%d",&n);
    for(i=0;i<9;i++)
    {
        m=n%10;
        if(m>4)
            sum+=(m-1)*pow(9,i);
        else
            sum+=m*pow(9,i);
        n=n/10;
    }
    printf("%d",sum);
    //system("pause");
    return 0;
 
}

1146: 吃糖果

C++
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
int t,n,a[1000005],sum;
int main()
{
    cin>>t;
    while(t--)
    {
        sum=0;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>a[i];
            sum+=a[i];
            }
        sort(a,a+n);
        if(sum-a[n-1]>=a[n-1]-1)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
}

1147: 查找子数组

C++
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[105],b[105];
int main()
{
    bool pd=0;
    int m,n;
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<m;i++) cin>>b[i];
    for(int i=0;i<n;i++)
    {
        if(a[i]==b[0])
        {
            for(int j=0;j<m;j++)
            {
                pd=0;
                if(a[i+j]!=b[j])
                {
                    pd=1;
                    break;
                }
            }
            if(!pd)
            {
                cout<<i<<endl;
                return 0;
            }
        }
    }
    cout<<"No Answer"<<endl;
    return 0;
}

1148: 组合三位数之一

C
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    int m,n,k,q,w,e;
    int a[11]={0};
    int find;int i;
    for(m=13;m<32;m++)
    {
        for(n=m+1;n<32;n++)
        {
            for(k=n+1;k<32;k++)
            {
                q=m*m;
                while(q>0)
                {
                    a[q%10]++;
                    q/=10;
                }
                w=n*n;
                while(w>0)
                {
                    a[w%10]++;
                    w/=10;
                }
                e=k*k;
                while(e>0)
                {
                    a[e%10]++;
                    e/=10;
                }
                find=1;
                for(i=1;i<10;i++)
                {
                    if(a[i]!=1)
                    {
                        find=0;
                        break;
                    }
                }
                if(find==1)
                {
                    printf("%d %d %d\n",m*m,n*n,k*k);
                }
 
               memset(a,0,sizeof(a));
            }
        }
    }
    return 0;
}

1149: 组合三位数之二

C++
#include<iostream>
#include<cstring>
using namespace std;
bool pd[10];
bool pdit(int n)
{
	while (n)
	{
		if (pd[n % 10])
		{
			return 0;
		}
		else
		{
			pd[n % 10] = 1;
			n /= 10;
		}
	}
	return 1;
}
void init()
{
	memset(pd, 0, sizeof pd);
	pd[0] = 1;
}
int main()
{
	for (int i = 123; i <= 333; i++)
	{
		init();
		if (pdit(i) && pdit(i * 2) && pdit(i * 3))
		{
			printf("%d %d %d\n", i, 2 * i, 3 * i);
		}
	}
}

1150: 数数多少个整数

C++
#include<iostream>
int main()
{
    int ans=0;
    char a;
    bool pd=0;
    while(scanf("%c",&a),a!='\n')
    {
        if(!pd)
        {
            if(a>='0'&&a<='9')
            {
                pd=1;
                ans++;
            }
        }
        else
        {
            if(a<'0'||a>'9')
            pd=0;
        }
    }
    std::cout<<ans<<std::endl;
    //system("pause");
}

待更

C
  • 7
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 可以为您提供一份 JS 实现的瀑布流代码,具体实现方式如下: 首先,需要在 HTML 页面中添加一个包含列数的 div,如下: ``` <div id="container" style="width:1200px;margin:auto;"> <div class="item"></div> <!-- 需要加入瀑布流的元素 --> <div class="item"></div> <div class="item"></div> ... </div> ``` 接着,在 JS 文件中初始化瀑布流,代码如下: ``` var container = document.getElementById('container'); var items = container.querySelectorAll('.item'); var columnNum = 4; // 设置列数 var columnArr = []; // 用于存放每一列的高度 for (var i = 0; i < columnNum; i++) { columnArr.push(0); } items.forEach(function(item) { // 找到高度最小的一列 var minHeight = Math.min.apply(null, columnArr); var minIndex = columnArr.indexOf(minHeight); // 设置元素样式 item.style.left = minIndex * (item.offsetWidth + 10) + 'px'; // 10 为列间距 item.style.top = minHeight + 'px'; // 更新该列高度 columnArr[minIndex] += item.offsetHeight + 10; // 10 为行间距 }); ``` 这样,就可以实现一个简单的瀑布流效果了。 ### 回答2: 当然可以使用Python来编写程序。Python是一种高级编程语言,具有简单易学、语法清晰、功能强大等特点。 首先,我们需要明确程序的功能和要求。然后,根据需求来设计算法和编写代码。 在Python中,可以使用输入输出函数来获取用户的输入和显示输出。例如,可以使用input()函数来获取用户输入的数据,使用print()函数来显示计算结果。 在程序设计过程中,可以使用各种数据结构和控制结构进行计算和处理。例如,可以使用变量存储数据,使用循环结构实现重复操作,使用条件语句实现根据不同情况进行不同处理等。 此外,Python还提供了许多内置函数和模块,可以帮助我们更便捷地完成任务。例如,可以使用math模块进行数学运算,使用datetime模块处理日期和时间等。 最后,在完成程序编写后,还可以使用各种调试工具和技术来验证程序的正确性和性能。可以使用print语句输出程序中的中间结果,使用断点进行程序调试,使用性能分析工具来优化程序等。 总之,使用Python来编写程序具有许多优势,包括语法简洁易懂、功能丰富、生态圈完善等。无论是初学者还是有经验的开发者,都可以使用Python来实现各种功能强大的程序。 ### 回答3: 当然可以使用Python来编写该程序。Python是一种简单易学的编程语言,非常适合用于编写各类程序。 首先,在开始编写程序之前,需要确保已经安装了Python解释器。然后,可以使用任何文本编辑器打开一个新的Python文件,并开始编写代码。 接下来,需要确定程序的具体要求和功能。根据要求,可以分析出程序需要实现的步骤和逻辑,然后将其转化为代码。 根据代码的逻辑,可以使用Python提供的各种函数和语法结构来实现所需功能。例如,可以使用if语句来进行条件判断,使用循环结构来重复执行某段代码,使用函数来封装重复使用的代码等。 同时,还可以利用Python强大的标准库和第三方库来简化编程过程。Python提供了各类功能强大的库,如NumPy、pandas、matplotlib等,可以用于数学计算、数据处理和可视化等方面。 在编写代码的过程中,可以使用Python的实时运行环境交互式地测试代码。这可以加快程序的开发速度,并且可以立即查看代码的运行结果。 最后,在完成代码编写后,可以保存代码并运行程序。可以通过命令行或者第三方集成开发环境(IDE)来运行Python程序。 总之,使用Python来编写程序非常方便和灵活。通过灵活运用Python提供的语法和库函数,可以实现各类功能强大的程序。同时,Python还拥有庞大的开发者社区,可以获取各类问的解答和学习资源。无论是初学者还是有经验的开发者,都可以通过Python来实现各种复杂的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值