求n的阶乘
#include<stdio.h>
int main(){
int n,t=1;
scanf(“%d”,&n);
for(int i=1;i<=n;i++){
t*=i;
}
printf(“%d”,t);
}
3. 输出水仙花数、完数、质数
#include <stdio.h>
//水仙花数
int main()
{
int a,b,c,n;
printf(“3位数以内的水仙花数为:\n”);
for (n=100;n<=999;n++)
{
a=n/100;
b=n/10%10;
c=n%100%10;
if(n==aaa+bbb+ccc) printf(“%d\t”,n);
}
printf(“\n”);
return 0;
}
#include<stdio.h>
int main(){
int sum;
//1000以内的完数
for(int i=2;i<=1000;i++) {
int sum=0;
for(int j=1;j<i;j++){
int t=i%j;
if(t==0)
sum+=j;
}
if(sum==i)
printf(“%d\n”,i);
}
return 0;
}
#include<stdio.h>
#include<math.h>
//判断质数
int main(){
int n,flag=0;
scanf(“%d”,&n);
if(n<=1){
flag=1;
}
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
flag=1;
break;
}
}
if(flag){
printf(“%d不是质数”,n);
}else{
printf(“%d是质数”,n);
}
return 0;
}
4.求复杂的前n项和。
如:求pi/4
#include<stdio.h>
#include<math.h>
int main()
{
double term;
必看视频!获取2024年最新Java开发全套学习资料
double sum = 0;
do
{
int i = 0;
term = 1.0 / (2 * i + 1);
if (i % 2 == 0)
sum += term;
else
sum -= term;
} while (term < 1e-4);
printf(“%.6f”, sum);// pi/4
return 0;
}
求e(循环直至项值于10-4。
e=1+1/1!+1/2!+1/3!+1/4!+1/5!+…+1/n! )
/求e的值。e≈1+1/1!+1/2!+1/3!+…,直到最后一项的值小于10的-4次方为止。/
#include <stdio.h>
int main(void)
{
double e=0.0;
int i=1,j=1,t=1;
while(1.0/t >= 1e-4)
{
e+=1.0/t;
t*=j ;
j++;
}
printf (“%lf\n”,e);
}
4. 九九乘法表
#include <stdio.h>
int main() {
int i,j; // i, j控制行或列
for(i=1;i<=9;i++) {
for(j=1;j<=i;j++)
// %-5d 控制宽度为5个字符,且左对齐
printf(“%d*%d=%-5d”, i, j, i*j);
printf(“\n”);
}
return 0;
}
6.break语句 continue语句
7.求x、y的最大公约数和最小公倍数
#include <stdio.h>
int zhuida(int a,int b){
int temp;
if(a<b){//保证a>b
temp=a;
a=b;
b=temp;
}
while(b!=0){//循环求两数的余数,直到余数为0
temp=a%b;
a=b;
b=temp;
}
return a;//返回最大公约数
}
int zhuixiao(int a,int b){
int zhuida(int a,int b);
int temp;
temp=zhuida(a,b);
return (a*b/temp);//返回最小公倍数
}
int main() {
int x,y;
int div,mul;
scanf(“%d %d”,&x,&y);
div=zhuida(x,y);//最大公约数
mul=zhuixiao(x,y);//最小公倍数
printf(“%d %d”,div,mul);
return 0;
}
//递归辗转相除求最大公约数
int gcd(int a,int b){
return a%b ? b : gcd(b,a%b);
}
8.有两个红球、三个黄球、四个白球,任意取五个球,其中必须有一个黄球,编程输出所有可能的方案。
#include<stdio.h>
#include<math.h>
int main(){
int red=2,yellow=3,white=4;
for(int i=0;i<=red;i++){
for(int j=1;j<=yellow;j++){
for(int k=0;k<=white;k++){
if(i+j+k==5){
printf(“red=%d yellow=%d white=%d\n”,i,j,k);
}
}
}
}
return 0;
}
(四)数组
1.从小到大排序:冒泡法排序、选择法排序
//冒泡排序
void b_sort(int a[],int n){
int temp;
for(int i=0;i<n-1;i++){
for(int j==0;j<n-i-1;j++){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
//选择排序
void s_sort(int a[],int n){
int temp;
for(int i=0;i<n-1;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(a[j]<a[min]){
min=j;
}
}
if(min!=i){
temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
}
2.斐波那契数列前20项
#include<stdio.h>
int main()
{
int n,a[100];
a[0]=1;
a[1]=1;
scanf(“%d”,&n);
for(int i=2;i<n;i++){
a[i]=a[i-1]+a[i-2];//递推公式
}
for(int i=0;i<n;i++){
printf("%d ",a[i]);//输出
if(i%5==0&&i!=0){//换行
printf(“\n”);
}
}
return 0;
}
3.求一维数组元素的和 、平均数 、 最大值(及其下标)
#include<stdio.h>
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
double average;
int max=0,maxnum=a[0];//max最大的下标;maxnum最大的值
for(int i=0;i<10;i++){
sum+=a[i];
if(a[i]>maxnum){
maxnum=a[i];
max=i;
}
}
average=sum*1.0/10;
printf(“sum=%d average=%lf max=%d maxnum=%d”,sum,average,max,maxnum);
return 0;
}
4.在一个有序数组中插入一个数仍然有序
#include <stdio.h>
void insert(int a[], int n, int x)
{
int i;
for (i = n - 1; i >= 0; i–) {
if (a[i]>x) {
a[i+1]=a[i]; // 当比较的数比x大时,将其后移
} else {
break; // 确定出x要插入的位置
}
}
a[i+1]=x; // 将x插入到数组中
}
int main(void)
{
int n = 8; // 初始数组大小为8
int x = 5; // 要插入的数为5
int A[20] = {1, 2, 3, 4, 6, 7, 8, 9};
insert(A, n, x);
for (int i = 0; i < n + 1; i++) {
printf("%d ", A[i]);
}
return 0;
}
5. 数组的逆序存放
void reverse(int p[], int n)
{
int i, j, temp;
for(i=0,j=n-1; i<j; i++,j–)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
6. 求二维数组的转至矩阵、每一行的最大值、每一行的和、对角线元素之和
//用的是五阶矩阵
void zhuanzhihs(){//转置函数
int temp;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(j>i){
temp=((p+i)+j);
((p+i)+j)=((p+j)+i);
((p+j)+i)=temp;
}
}
}
}
void hangmax(){//每一行最大值
for(int i=0;i<5;i++){
int max=arr[i][0];
for(int j=0;j<5;j++){
if(arr[i][j]>max){
max=arr[i][j];
}
}
printf(“max=%d\n”,max);
}
}
void hangsum(){//每行求和
for(int i=0;i<5;i++){
int sum=0;
for(int j=0;j<5;j++){
sum+=arr[i][j];
}
printf(“sum=%d\n”,sum);
}
}
void duijiaosum(){//对角线求和
int sum=0;
for(i=0;i<;i++)
{
sum+=a[i][i];
sum+=a[i][2-i];
}
sum-=a[3][3];
printf(“%d”,sum);
}
7. 杨辉三角
#include <stdio.h>
#define N 20
int main()
{
int i, j, k, n=0, a[N][N];
printf(“请输入要打印的行数:”);
scanf(“%d”,&n);
printf(“%d行杨辉三角如下:\n”,n);
for(i=1;i<=n;i++)
a[i][1] = a[i][i] = 1;
//两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数
for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
//i=3和j=2是关键点
a[i][j]=a[i-1][j-1]+a[i-1][j]; //除两边的数外都等于上两顶数之和
for(i=1;i<=n;i++){
for(k=1;k<=n-i;k++)
printf(" "); //这一行主要是在输出数之前打上空格占位,让输出的数更美观
for(j=1;j<=i;j++) //j<=i的原因是不输出其它的数,只输出我们想要的数
printf(“%5d”,a[i][j]);
printf(“\n”); //当一行输出完以后换行继续下一行的输出
}
printf(“\n”);
}
8. 自己编程实现 :字符串的拷贝,连接,比较、统计字符个数,
int Strlen(char a[]){//长度
int b,i,len=0;
for(i=0;a[i]!=‘\0’;i++)
len++;
return len;
}
void strcat1(char a[],char b[]){//接长
int lena,lenb,i,j;
lenb=Strlen(b);
lena=Strlen(a);
for(i=lena,j=0;i<lena+lenb;i++,j++)
a[i]=b[j];
}
void copy(char a[],char b[])//strcpy
{
int i;
for(i=0;a[i]!=‘\0’;i++)
b[i]=a[i];
}
int strcmp1(char str1[],char str2[])//strcmp
{
int i=0;
while((str1[i] == str2[i]) && (str1[i] != ‘\0’))
//自定义实现strcmp();打印不同字符的差值
i++;
return str1[i]-str2[i];
}
大写小写互换、大小写字母的个数 字符串中某一字母(例如’a’)的个数
#include <stdio.h>
int main()
{
char a[100];
int i,cnt=0,cnt1=0,cnt2=0;
gets(a);
for(i=0;a[i]!=‘\0’;i++){
if(a[i]==‘a’){
cnt++;
}
if(a[i]>=‘a’&&a[i]<=‘z’){
a[i]-=32;
cnt1++;
}
else if(a[i]>=‘A’&&a[i]<=‘Z’){
a[i]+=32;
cnt2++;
}
}
puts(a);
printf(“a的个数:%d”,cnt);
printf(“小写个数:%d 大写个数:%d\n”,cnt1,cnt2);
return 0;
}
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
)//strcmp
{
int i=0;
while((str1[i] == str2[i]) && (str1[i] != ‘\0’))
//自定义实现strcmp();打印不同字符的差值
i++;
return str1[i]-str2[i];
}
大写小写互换、大小写字母的个数 字符串中某一字母(例如’a’)的个数
#include <stdio.h>
int main()
{
char a[100];
int i,cnt=0,cnt1=0,cnt2=0;
gets(a);
for(i=0;a[i]!=‘\0’;i++){
if(a[i]==‘a’){
cnt++;
}
if(a[i]>=‘a’&&a[i]<=‘z’){
a[i]-=32;
cnt1++;
}
else if(a[i]>=‘A’&&a[i]<=‘Z’){
a[i]+=32;
cnt2++;
}
}
puts(a);
printf(“a的个数:%d”,cnt);
printf(“小写个数:%d 大写个数:%d\n”,cnt1,cnt2);
return 0;
}
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
[外链图片转存中…(img-mCKx5JAq-1720154555761)]
[外链图片转存中…(img-ucHKpbdd-1720154555762)]
[外链图片转存中…(img-fLQRi7wR-1720154555762)]
[外链图片转存中…(img-T6VoWlKd-1720154555762)]