求C语言代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C语言代码相关的知识,希望对你有一定的参考价值。
第1章 Java语言基础知识1.4基本数据类型与表达式
1.4.1变量与常量
标识符命名的规则 必须字母、“_”或“¥”开头
final声明了一个常量
1.4.2基本数据类型
数字型 布尔型boolean 字符型char
1.4.3表达式与运算符
1.4.4类型转换
扩展转换
窄化转换
1.5数组
1、数组声明 int[] arryname; int[] a=new int[8];
2、数组的初始化:
3、数组元素的引用
第2章 类与对象的基本概念
2.1面向对象程序设计的特征
1、抽象(过程抽象和数据抽象)
2、封装
3、继承(继承与派生、派生、重用)Java只支持单继承
4、多态
2.2类与对象
1、类和对象的含义(类是对象的抽象,是对象的模板;对象是类的实例)
2、类的声明
[public][abstract/final] class 类名称[<Type ,Type>][extends 父类名称][implements 接口名称列表]
成员变量(变量成员声明及初始化)
成员方法(方法声明及方法体)
(类体)
3、对象的创建
类名 对象名 = new 类名(实参列表);
or
类名 对象名;
对象名=new 类名();
4、类的数据成员
没有static修饰的变量称为实例变量,有static修饰的变量称为类变量
实例变量:<实例名>.<实例变量名>, x.radious
类变量:<实例名/类名>.<类变量名> x.PI Circle.PI(类变量在整个类中只有一个值)
5、类的方法成员
[public|protected|private][static][final][abstract][native][synchronized][<Type,Type>]返回类型 方法名([参数列表])
方法体
<对象名>.<方法名>([参数列表])
实例方法:
类方法:要加static修饰符,类方法表示具体实例的类中对象的共有行为,在使用时可以将类方法发送给类名
6、成员的访问权限getF方法,set方法,this的用法(若形参与实参变量名相同,在实参变量前加this)
2.3对象初始化和回收
构造方法:作用、特征
构造函数是写在类体中的。
特征:构造方法的方法名与类名相同,构造方法没有返回类型,构造方法通常被声明为公有的(public),构造方法可以有多个参数,构造方法主要作用是完成对象的初始化工作,构造方法不能再程序中显示的调用,在生成一个对象时系统会紫铜调用该类的构造方法为新生成的对象初始化。
第3章 类的方法
增强型for循环
for(数组类型 变量名:数组名)
第4章 类的重用
4.1类的继承
1、继承的含义和作用
派生出来了类称为子类
已有的类称为超类(父类)、基类
java只支持单继承,通过接口来实现多继承
2、继承语法
[ClassModifier] class ClassName [extends SuperClassName] [implement interface]
//类体
子类不能直接访问从父类中继承的私有属性及方法,但可以使用公有(及保护)方法进行访问。可以用get()方法来获取
3、隐藏和覆盖
隐藏和覆盖是指子类对从父类继承来的属性变量及方法可以重新加以定义。
属性的隐藏:子类对父类继承来的属性变量重新加以定义,则从父类的继承的属性将被隐藏。super.域名来访问被隐藏的父类域。
子类不能继承父类中的静态属性,但可以对父类中的静态属性进行操作。
方法的覆盖:如果子类不需要使用从父类继承来的方法功能,则可以声明自己的方法。在声明的过程中,使用相同的方法名及参数,但执行不同的功能。
4、继承时的构造方法
构造方法是类的一种特殊方法,他可以重载,但不能从父类继承。
可以调用父类的构造方法super(),存在于子类构造函数的第一行。
4.2Object类
1、Object类是所有类的父类,处在类层次最高点
2、equals()方法:数值上相等 ,两个对象具有相同的类型及相同的属性值。
3、Object类中的equals()方法,因此所有类都继承了equals()方法,其主要作用是判断两个对象是否同一;如果要判断两个对象是否属性相同,则不能使用Object类中继承的equals()方法,而是在在类中声明对equals()的重写
4、等号==:同一,如果两个引用变量指向的是同一个对象
4.3终结类与终结方法
1、终结类:含义 特点
如果一个类被Final修饰符定义,说明这个类不可能有子类,即final类不能有派生类
通常有固定的作用、用来完成某种标准功能的类,不能被继承以达到修改的目的
2、终结方法:含义 特点
final修饰符所修饰的方法是功能和内部语句不能被更改的最终方法,,不能被派生类覆盖,即不能被重新改写
4.4抽象类
1、抽象类:含义、特征
所谓抽象类就是不能使用new 方法进行实例化的类,即没有具体实例对象的类。一个类被声明为抽象类时,要在这个类前加修饰符abstract。
public abstract class Shape
//类体
作用是让其他类来继承它的抽象化的特征,在抽象类中可以包括被他的所有子类共享的公共属性,不能作为模板创造实例
抽象类有构造函数
2、抽象方法:含义 特征
public abstract <returnType><methodName>(…);//没有方法体
返回类型 方法名
一个抽象类的子类如果不是抽象类,则他必须为父类中所有抽象方法书写方法体,即重写父类中所有的抽象方法,只有抽象类才能拥有抽象方法,除了抽象方法,抽象类还包括非抽象类。
4.6类的组合
1、继承:纵向
2、组合:横向
第5章接口与多态
5.1接口
1、接口含义
与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为
2、接口的声明
[接口修饰符] interface 接口名称 [<Type,,Type>][extends 父类名]…//方法的原型声明或静态常量
接口中声明的方法都是抽象方法
在接口声明中,Java允许省略数据成员的final关键字、方法public及abstract关键字
3、接口的特征
4、接口的实现
利用接口构造类的过程,称为接口的实现
[类修饰符]class 类名称 implements 接口名称;
完成接口的类必须实现接口中的所有抽象方法,注意在实现一个接口的时候,来自接口的方法必须声明成public。具体实现一个接口后,就获得了一个普通的类,可以用标准的方式对其进行扩充。
5、多重继承
一个类可以有多个接口,可实现多继承。
[类修饰符]class 类名称 Implements 接口1,接口2….
….
6、接口的扩展(继承)
interface 子接口的名称 extends 父接口的名称1,父接口的名称2,……
……
5.2塑型
1、塑型的含义(自定义对象类型的转换)
对象只能被塑性为任何一个父类类型,对象所属的类实现的一个接口,或者回到他自己所在的类。
2、塑料的原则
对于对象,塑性并不是转换,而仅仅是将对象暂时当成更一般的对象来对待,并没有改变其类型。
3、方法的查找(实例方法)
当子类对象塑性成父类之后,若子类和父类有共同的方法,则先在子类中调用此方法,如果不存在,才会到父类中调用该方法。
5.3多态的概念
1、多态:含义 作用
2、绑定的概念
3、多态的应用(二次分发)
5.5构造方法与多态
构造方法不存在多态
第8章多线程
8.1多线程编程基础
1、线程的概念
如果要实现一个程序中多段代码同时并发执行,急需要产生多个线程,并指定每个线程上所要运行的程序段,这就是多线程,有两种方法:继承Thread类和实现Runnable 接口
2、用Thread类实现多线程
class TestThread extends Thread//声明一个类继承Thread类
public void run()
for(int i=0;i<20;i++)
System.out.println("执行了自定义线程"+i);
System.out.println("自定义线程结束!");
/*1.声明类,继承Thread类
2.重写Thread类的Run方法
3.定义对象,调用线程start()方法
start作用:
启动线程
调用run方法
*/
public class Test1
public static void main(String[] args)
TestThread tt=new TestThread();
tt.start();
for(int i=0;i<20;i++)
System.out.println("执行了主线程"+i);
System.out.println("主线程结束!");
——————————————————test2————————————————
class TestTicket extends Thread
private int num=20;
public void run()
while(num>0)
System.out.println(Thread.currentThread().getName()+"#####"+num--);
public class Test2
public static void main(String[] args)
TestTicket tt0=new TestTicket();
TestTicket tt1=new TestTicket();
TestTicket tt2=new TestTicket();
tt0.start();
tt1.start();
tt2.start();
3、用Runnable接口实现多线程
/*1.声明类TestTicket,实现Runnable接口
* 2.在TestTicket类中,重写Runnable接口的Run()方法
* 3.在main方法中,建立TestTicket类的对象tt
* 4.声明Thread类的对象t0,t1,t2,用tt作为调用构造方法的实参Thread t0=new Thread(tt)
*
*
* 3.通过Thread类建立线程对象
* 4.将Runnable接口的子类对象作为调用Thread类的构造方法
* 5.调用Thread类的start()方法,开启线程,并调用Runnable接口子类TestTicket的run()方法*/
class TestTicket implements Runnable
private int num=1000;
private Object obj=new Object();
public void run()
while(true)
synchronized(obj)
if(num>0)
try
Thread.sleep(10);
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(Thread.currentThread().getName()+" ##### "+num);
num--;
public class Test3
public static void main(String[] args)
TestTicket tt=new TestTicket();
Thread t0=new Thread(tt);//public Thread(Runnable target)target的取值是Runable接口子类的对象
Thread t1=new Thread(tt);
Thread t2=new Thread(tt);
t0.start();
t1.start();
t2.start();//1.开启线程2.调用tt对象的run方法,t0,t1,t2处理的对象是tt,三个线程共享tt的数据
//Thread t3=new Thread();
//t3.start();//1.开启线程2.调用Thread类的run方法是空的
4、多线程间的同步控制 参考技术A
几个人没一个说明白的。
第一题是求素数平方和。先用筛法算素数,再求和。但楼主你没给数据范围,也没给输入输出格式,暂且算到1024
#define N 1024void CalculatePrime(int in[])
int i = 0;
int j;
in[0] = in[1] = -1;
for(i = 2;i < N;i ++)
if(in[i] == 0)
for(j = i * 2;j < N;j += i)
in[j] = -1;
int main()
int prime[N] = 0;
int i,n;
long long sum;
CalculatePrime(prime);
printf("Input n(n < %d):",N);
scanf("%d",&n);
for(i = 2,sum = 0;i <= n;i ++)
if(prime[i] == 0)
sum += (i * i);
printf("result is %lld\\n",sum);
return 0;
第二题没什么说的,就是一个下三角的矩阵,同样,你没给输入数据的范围和格式,我只能按一般要求写
int k,i,j;
printf("Input k: ");
scanf("%d",&k);
for(i = 0;i < k;i ++)
for(j = 0;j < k - i - 1;j ++)
printf(" ");
for(;j < k;j ++)
printf("+");
printf("\\n");
return 0;
第三题题目表述不清,两站往返的车票算1种还是算2种?如果不算回程,换句话说,如果默认终点站编号永远比起点号大,那就是简单的组合问题,程序上就是输出一个上三角的矩阵。
int n,i,j;
printf("Input n: ");
scanf("%d",&n);
for(i = 1;i <= n;i ++)
for(j = i + 1;j <= n;j ++)
printf("%d - %d ",i,j);
printf("\\n");
return 0;
如果要求算回程,那就是排列问题,需要把下三角那部分也输出,你自己改一下j的初值就好,但要把矩阵对角线排除。
第四题是典型的递归问题,是杭电ACM平台的Problem 2018,思路很简单,今年的牛包括两类,一类是去年的老牛,一类是今年新出生的小牛,而今年出生的小牛和3年前的牛数量相等(因为3年前的所有牛都可以下小牛了)。即 f(n) = f(n - 1) + f(n - 3);
以下代码杭电OJ测试Accept,保证正确,但我把OJ要求的循环输入删掉了,对你没有影响。
long long cow(int n)if(n >= 1 && n <= 3)
return n;
else
return cow(n - 1) + cow(n - 3);
int main()
int N;
printf("Input n: ");
scanf("%d",&N);
printf("%lld\\n",cow(N));
return 0;
本回答被提问者采纳 参考技术B 写主要部分吧,第一个
while(n-1)
sum=sum+n*n;
第二个
for(i=0;i<k;i++)
for(j=0;j<k;j++)
if(j<k-1-i ) printf(" ");
else printf(" + ");
printf("\n");
第三个
for(i=1;i<n+1;i++)
for(j=1;j<n+1;j++)
while(i!=j) printf("起始车站d% - 终点车站 d%\n",i,j);
第四个不回答,他娘的,牛不会死啊。他娘的生的还全是母牛!
看下面都没有人回答,好心把说一下吧,其实很简单的,【n/4】(取整符号)以后 就是一个类似于第一题的等差数列求和的问题, 参考技术C 第二题
1 #include<stdio.h>
2 int main(void)
3 int row;
4 while(1)
5 printf("请输入行数:");
6 scanf("%d",&row);
7 int i,j;
8 for(j=0;j<row;j++)
//打印空格
9 for(i=0;i<row-j-1;i++)
10 printf(" ");
11
//打印+
12 for(i=0;i<j+1;i++)
13 printf("+");
14 printf("\n");
15
16
17
18
19
第三题
1 #include<stdio.h>
2 int main(void)
3 int num,sum=0,all;
4 printf("请输入车站数:");
5 scanf("%d",&num);
6 int i;
7 for(i=1;i<num;i++)
8 sum+=i;
9
10 printf("需要准备%d种票\n",2*sum);
11 printf("所有格式为:\n");
12 int j;
13 for(i=1;i<num;i++)
14 for(j=i+1;j<=num;j++)
15 printf("第%d站 - 第%d站\t第%d站 - 第%d站\n",i,j,j,i);
16
17
18
第四题题目有点不明确,按我自己理解写的
1 #include<stdio.h>
2 #include<math.h>
3 int main(void)
4 int year,data1,data2;
5 printf("请输入年份:");
6 scanf("%d",&year);
7 data1=year/3;
8 data2=year%3;
9 double numb=pow(2,data1);
10 double num=pow(2,data1-1);
11 if(data2!=0)
12 printf("一共有%.0lf头母牛\n",numb);
13
14 else
15 printf("一共有%.0lf头母牛\n",num);
16
17
~ 参考技术D 出题人的语文和数学和生物都很差,完全没有生活常识
比如第一题很有歧义啊 比如n=3 答案是2*2+3*3还是2*2+3*3+5*5啊
第二题 说是等腰直角三角形 可是例子看起啦不像啊 难道不需要美学效果吗
第三题 神马叫多少种车票啊 定义很不明确啊 怎么分类啊
第四题 难道让我建立生物学模型?? 还有一个头牛怎么生小牛啊?! 自交?!比如n=100 要不要算老死病死的牛啊
用C语言怎么输入为数组赋值,求代码
#include <stdio.h>
int main(void)
int a[5];
printf("请输入5个数字:");
for(int i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\\n");
return 0;
扩展资料:
for循环
for循环是编程语言中一种开界的循环语句,而循环语句 [1] 由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。
C语言中的for循环形式为:
for(单次表达式;条件表达式;末尾循环体)
中间循环体;
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号可以省略,执行完中间循环体后接着执行末尾循环体。
参考资料:for循环-百度百科
参考技术A 你好以下就可以实现
#include <stdio.h>
int main(void)
int a[4],i;
printf("请输入4个数字:");
for(i=0;i<4;i++) scanf("%d",&a[i]);
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
希望能帮助你哈本回答被提问者和网友采纳 参考技术B #include <stdio.h>
int main()
int num[10];
int i;
for(i = 0; i < 10; i++)
printf("请为第%d个数赋值:",i+1);
scanf("%d",&num[i]);
printf("输出刚才输入的值: \n");
for(i = 0; i < 10; i++)
printf("%d\t",num[i]);
printf("\n");
return 0;
以上是关于求C语言代码的主要内容,如果未能解决你的问题,请参考以下文章